我试图根据以下基本架构通过导航路线(抽屉导航)传递属性:
推送参数
onPress={() => {
this.props.navigation.navigate('Screen2', {
user: 'USER_A'
});
在Screen2上获取参数
const { navigation } = this.props;
const userName = navigation.getParam('user', null);
但是Screen2还包含它自己的导航(堆栈导航)的问题...
const CollapsScr = createStackNavigator({
Collaps: { screen: Screen2 }
});
因此,当我从Screen2中删除堆栈导航时,我可以毫无问题地传递参数,但是我希望保持这种导航状态,并且仍然能够通过抽屉导航路线传递参数。有什么解决办法吗?
答案 0 :(得分:1)
您可以执行this.props.navigation.dangerouslyGetParent().getParam()
来获取所需的父参数。
您也可以采用其他方法。
在导航之前,您可以进行this.props.navigation. getChildNavigation(°YourGrandChildKey°).setParams()
。 YourGrandChildKey
是您在抽屉上定义的那个
编辑。
我给出的第一个解决方案为您提供针对特定问题的参数。我不知道您的应用程序将如何工作。
取决于您在评论中的要求,具体取决于。我一直使用redux来存储我100%确定需要在我的应用程序中全部存储的数据,或者可以随着时间变化而更改2个或更多屏幕布局的数据。
第一个解决方案的问题是,您要获取的数据存储在应用程序的另一个位置,而参数user
在整个抽屉中可见。
我建议创建一个redux基本结构。这样一来,您就知道需要将哪些数据放到redux上,几乎可以肯定在其他地方需要这些数据,或者至少对于将来的更新是可以到达的。
对于您的特定情况,我会将用户数据放在redux上,因为这有助于向您提供有关此应用程序会话的信息。
如前所述,您必须选择认为适合您的应用程序的解决方案,如果您仅需要针对特定屏幕的变量,请使用第二种解决方案,这样只有屏幕具有该信息,而无需填充应用程序的各个部分包含不必要的数据。
希望这对您有帮助!