亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

REACT-NATIVE:Flatlist 不會在道具更改時更新

REACT-NATIVE:Flatlist 不會在道具更改時更新

九州編程 2022-10-13 15:41:47
我有一個項目頁面,我在該頁面上呈現與該項目相關的評論的平面列表,我遇到的問題是當我更改項目時,沒有發生帶有新道具(itemId)的 api 調用,并且來自上一個項目的評論被渲染。我確定新的 itemId 正在被傳遞到屏幕,因為其他一切都發生了變化(名稱、圖像、描述......)您到達商品頁面的方式是通過商店頁面呈現商品圖片列表(我在其中傳遞了在商品頁面上呈現商品所需的所有道具)我確實注意到,當我在項目頁面上然后按返回返回商店頁面然后單擊另一個項目時,項目頁面在更新前顯示上一個項目的數據半秒鐘,但列表從來沒有更新它繼續使用舊的 itemId 進行調用。我使用 fetch 來獲取列表,我也嘗試過使用 axios,結果相同。 componentDidMount() {    this._isMounted = true;    const { navigation } = this.props;this.focusListener = navigation.addListener('didFocus', async () => {    await fetch("https://api..." + navigation.getParam('itemId'))            .then(response => response.json())            .then((responseJson) => {                this.setState({                    loading: false,                    dataSource: responseJson                })                console.log("response Comments:" + JSON.stringify(responseJson));                console.log('the state of item id -->', this.props.navigation.getParam('itemId'))            });   }}當我 console.log 時,我得到了正確的 itemId 但似乎調用發生在它收到新道具之前......我對 React Native 和一般編碼相對較新,所以如果我需要更清楚,請告訴我。謝謝你的幫助!
查看完整描述

1 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

我遇到了類似的問題。這是因為propsofFlatList保持不變。盡管對于個人renderItem來說,它正在發生變化,但FlatList 組件并沒有意識到這一點。

要解決這個問題,您可以使用extraData道具。

因此,如果您將extraDataprop 設置為FlatListlike extraData={this.props},這將在父組件的任何 prop 更改時強制重新加載列表。


查看完整回答
反對 回復 2022-10-13
  • 1 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號