如何在react-native中使用StackNavigator的组件中获取数据?

时间:2017-10-17 18:24:54

标签: react-native react-navigation react-native-ios asyncstorage stack-navigator

以下是我尝试使用react-native -

为iOS应用做的事情
  1. 我正在使用StackNavigator
  2. 在主屏幕中,我会显示get/fetchAysncStorage列表中的所有项目。这是在componentDidMount()中完成的。这很好。
  3. 我转到下一个屏幕(使用StackNavigator)将新项目添加到AsyncStorage的列表中。项目已添加。
  4. 当我使用后退按钮返回主屏幕时,不会显示更新的列表。此外,不会调用componentDidMount()
  5. 如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

Redux是最好的选择,但有一个肮脏的解决方法如下:

主屏幕

state = { items: [] }

addItemFromChild = (item) => {
   this.setState((prevState) => ({ items: [...prevState.items, item] }))
}

goToAddItemScreen = () => {
   this.props.navigation.dispatch(NavigationActions.navigate({ routeName: "AddItemScreen", params: { addItemFromChild: this.addItemFromChild } }))
}

AddItemScreen

addItem = (item) => {
   this.props.navigation.state.params.addItemFromChild(item)
}