【发布时间】:2019-01-30 08:26:06
【问题描述】:
考虑一个简单的stack navigator 使用react-native 导航器:
const stackNav = createStackNavigator(
{
CustomerList: {
screen: CustomerList,
navigationOptions: {
title: "Select a customer"
}
},
CustomerDetail: {
screen: CustomerDetail
}
},
{
navigationOptions: {
headerStyle: {
backgroundColor: colors.dark
},
headerTintColor: "#fff",
headerTitleStyle: {
fontWeight: "bold"
}
}
}
);
export default stackNav;
CustomerDetail 使用 navigation 属性从 CustomerList 中调用。
CustomerList 和 CustomerDetail 都包含特定的状态,例如用户单击以打开详细信息的列表中的位置、列表中的选定项目、详细信息深度等。
我注意到,在从CustomerList 到CustomerDetail 的每个屏幕更改上,组件都在重新渲染,调用componentWillMount。这样一来,我就失去了我之前的所有状态,导致列表和细节上的用户上下文松动。
我需要一种存储状态的方法,我可以想到 3 个选项:
一个。然后存储在 React Context 上,然后在 `componentWillMount` 上重新加载
b.将状态存储在 AsyncStorage 上
c。找到一种在CustomerDetail 和`CustomerList` 之间共享公共状态的方法
(a) 和 (b) 在这里没有看到这种情况,所以我的问题是如何在 react navigatior 上的 2 个组件之间共享一个公共状态。我很确定这应该很简单,但我不知道该怎么做。
【问题讨论】:
标签: reactjs react-native react-navigation