Aye*_*har 13 reactjs react-native react-navigation react-navigation-stack react-navigation-v5
以下是我的应用程序导航器的层次结构
???appNavigator(底部标签导航器)
???提要(堆栈导航器)
???通知(堆栈导航器)
???个人资料(堆栈导航器)
现在的问题是我必须复制所有堆栈中通用的屏幕(ProfileDetail、PostDetail 和 PageDetail),以便在堆栈中访问它们。
对于此用例,是否有更好的解决方案。我应该在哪里放置通用屏幕,以便它们在所有子堆栈中可用,并且我不必在任何地方复制它们。
这是我经历的一个开放的 github 问题,但找不到好的解决方案 Isuue
由于您有多个公共屏幕和一些不同的数据(标题、描述等),因此您只能创建一个具有多个屏幕的公共堆栈导航器,然后您可以从其他任何地方调用它。
你的堆栈导航器可以是这样的:
export default class StackNavigator extends React.Component {
render() {
const { stackName1, stackComponent1, stackName2, stackComponent2, stackName3, stackComponent3 } = this.props;
// console.log("props");
// console.log(stackName1);
// console.log(stackComponent1);
return (
<Stack.Navigator initialRouteName={stackName1}>
<Stack.Screen
name={stackName1}
component={stackComponent1}
initialParams={{key: "value"}}
/>
<Stack.Screen
name={stackName2}
component={stackComponent2}
initialParams={{key: "value"}}
/>
<Stack.Screen
name={stackName3}
component={stackComponent3}
initialParams={{key: "value"}}
/>
</Stack.Navigator>
)
}
}
Run Code Online (Sandbox Code Playgroud)
然后从任何屏幕(提要、通知、个人资料)调用导航器:
<StackNavigator stackName1="PostDetailScreen" stackComponent1={PostDetailScreen} stackName2="PageDetailScreen" stackComponent2={PageDetailScreen} stackName3="ProfileDetailScreen" stackComponent3={ProfileDetailScreen}/>
Run Code Online (Sandbox Code Playgroud)
另外,如果您想从堆栈导航器向每个页面发送额外的参数,您可以将initialParams={{key: "value"}}我添加到堆栈导航器的每个屏幕中的参数发送给您。如果您想从特定屏幕接收此道具,只需访问此处this.props.route.params.key描述的密钥即可。
如果堆栈上有更多屏幕,则可以在数组中传递组件信息。
| 归档时间: |
|
| 查看次数: |
1559 次 |
| 最近记录: |