FlatList仅在发生用户交互后更新

时间:2019-04-01 01:49:07

标签: react-native react-native-flatlist react-props

我有一个从导航道具获取数据的组件,该组件用于设置CDM()中的状态:

this.setState({
  data: this.props.navigation.getParam('data', 'Some Data')
})

然后在FlatList中使用该状态。 道具更改时.. FlatList不会更新...直到客户端触摸屏幕。

我尝试将道具直接放入FlatList中:

data={this.props.navigation.getParam('data', 'Some Data')}

我尝试使用extraData属性:

<FlatList
   style={{ flexGrow: 1, marginTop: 10 }}
   data={this.state.data}
   keyExtractor={(item, index) => index.toString()}
   extraData={this.props.navigation.getParam('data', 'Some Data')}
   renderItem={({ item }) => {...}>

我尝试使用componentDidUpdate()在道具更改但CDU从未被调用时重置状态。

编辑: 我感觉是因为当我添加项目时;我正在导航(navigation.goBack()) 和goBack()刷新状态?我不确定。

1 个答案:

答案 0 :(得分:0)

找到了:

https://github.com/react-navigation/react-navigation/issues/922#issuecomment-344752635

本质上是将一个函数作为参数传递,并调用该函数以更改父级的状态,然后调用goBack()