第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

你如何從 react-native 的子組件(帶參數(shù))調(diào)用父函數(shù)?

你如何從 react-native 的子組件(帶參數(shù))調(diào)用父函數(shù)?

達令說 2021-12-12 15:46:35
我有一個名為 HomeHeader 的 React 組件。HomeHeader 中有一個名為 SearchResultFlatList 的無狀態(tài)組件。SearchResultFlatList 中有一個名為 SearchListItem 的無狀態(tài)組件。HomeHeader 有 2 個輸入字段(一個用于位置,一個用于目的地)。在輸入字段中輸入后,SearchResultFlatList 將被創(chuàng)建并重新填充 SearchListItems(每次我輸入內(nèi)容時(想想谷歌搜索))。單擊 SearchListItem 時,我希望能夠調(diào)用駐留在 HomeHeader 上的函數(shù)。要實現(xiàn)的功能是單擊 SearchListItem,并在 HomeHeader 上填充相應的輸入字段。我在 HomeHeader 上聲明了一個名為 onLocationPress 的函數(shù)。它接受一個參數(shù)(即 onLocationPress(locationValue))。將對此函數(shù)的引用傳遞給子組件非常簡單,但是當涉及到變量時變得更加困難。來自 HomeHeader.js<SearchResultFlatList   containerOpacity={this.state.opacityProp}   headerExpanded={this.state.headerExpanded}   results={this.props.searchResults}   clickLocationResult={this.onLocationPress}/>來自 SearchResultFlatList.jsconst SearchResultFlatList = (props) => {    return(        <Animated.View>        <FlatList          ....            <SearchListItem                clickLocationResult={props.clickLocationResult}                primaryText={item.primaryText}                fullText={item.fullText}            />)}          ....        />    </Animated.View>    )}來自 SearchListItem.jsconst SearchListItem = (props) => {    return (        <TouchableOpacity             style={styles.searchListItemContainer}            onPress={props.clickLocationResult(props.primaryText)}        >        ....        </TouchableOpacity>    );  }以這種方式調(diào)用它會導致函數(shù)被多次調(diào)用。我onTextChanged()在輸入字段上也有一個函數(shù),每次我輸入它都會記錄props.primaryText值。我認為這與每次鍵入時都會創(chuàng)建新的 SearchListItems 的事實有關(guān),但我不知道解決方法。
查看完整描述

2 回答

?
GCT1015

TA貢獻1827條經(jīng)驗 獲得超4個贊

您不能將帶有參數(shù)的函數(shù)傳遞給 onPress。而是定義一個箭頭函數(shù),該函數(shù)使用像這樣的參數(shù)來執(zhí)行您的 clickLocationResult。


const SearchListItem = props => {

  return (

    <TouchableOpacity

      style={styles.searchListItemContainer}

      onPress={() => props.clickLocationResult(props.primaryText)}

    >

      ....

    </TouchableOpacity>

  );

};


查看完整回答
反對 回復 2021-12-12
?
智慧大石

TA貢獻1946條經(jīng)驗 獲得超3個贊

你能在 HomeHeader 中發(fā)布你的 onLocationPress 函數(shù)嗎?


我懷疑你需要的是所謂的函數(shù)柯里化。有很多關(guān)于此的資源,但基本思想是您的函數(shù)將被定義為:


function onLocationPress(text) {

    // this is your click handler

    return () => {

        // do something with that text

    }

}

當您為 onPress 處理程序提供帶有參數(shù)的函數(shù)時,該函數(shù)正在執(zhí)行,結(jié)果將返回給處理程序,而不是函數(shù)本身。你想要的是 onLocationPress 成為一個返回另一個函數(shù)的函數(shù)。


查看完整回答
反對 回復 2021-12-12
  • 2 回答
  • 0 關(guān)注
  • 211 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號