【问题标题】:How to fetch data in a component which is using StackNavigator in react-native?如何在 react-native 中使用 StackNavigator 的组件中获取数据?
【发布时间】:2017-10-17 18:24:54
【问题描述】:

这是我尝试使用 react-native 为 iOS 应用程序做的事情 -

  1. 我正在使用 StackNavigator
  2. 在主屏幕中,我将所有项目显示在一个列表中,即get/fetch 来自AysncStorage。这是在componentDidMount() 中完成的。这很好用。
  3. 我转到下一个屏幕(使用 StackNavigator)将新项目添加到 AsyncStorage 的列表中。项目已添加。
  4. 当我使用返回按钮返回主屏幕时,未显示更新的列表。此外,不会调用 componentDidMount()

如何解决这个问题?

【问题讨论】:

  • 我已经使用 react-redux 解决了这个问题,但如果有其他可用的解决方案,请告诉我。

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


【解决方案1】:

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 } }))
}

添加项目屏幕

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

【讨论】:

    猜你喜欢
    • 2020-06-12
    • 2019-12-21
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    相关资源
    最近更新 更多