【问题标题】:Flatlist not rerendering on state changeFlatlist 不会在状态更改时重新呈现
【发布时间】:2019-03-24 22:07:56
【问题描述】:

我有一个 FlatList,当状态发生变化时它不会重新渲染。如何让 FlatList 重新呈现?

 _renderItem = ({item}) => {
    if(item=='null'){
      return <Text>Item is null</Text>
    }else{
      return <Text>Item is not null</Text>
    }    
};

render(){
 return(
  <FlatList
   data={this.state.itemList}   
   renderItem={this._renderItem}      
  />

 )
}

【问题讨论】:

  • 你确定状态改变正在发生吗?你能显示那个代码吗?
  • 别忘了null'null'不一样
  • 是的,我意识到 null 与 null 不同,并且状态设置为 this.setState({ItemList: array})

标签: javascript reactjs react-native react-native-flatlist


【解决方案1】:

将您的代码更改为:

render(){
  return(
    <FlatList
      data={this.state.itemList}   
      extraData={this.state}
      renderItem={this._renderItem}      
    />
  )
}

FlatList 组件需要将 extraData 设置为 this.state 以便在更改时更新。

有关详细信息,请参阅文档: https://facebook.github.io/react-native/docs/flatlist.html

【讨论】:

  • 请在你的回答中解释你改变了什么以及为什么它解决了问题:)
  • 谢谢,但是当我把 _renderItem 放在上面时仍然没有工作。
  • 是的,我把它放在渲染和返回方法之上。
  • 在我的情况下,extraData 已经在 renderItem 之上但无法正常工作。请告诉我一个可能的解决方案吗?
猜你喜欢
  • 2020-12-03
  • 2019-01-09
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-10
  • 1970-01-01
相关资源
最近更新 更多