react-native - 共享多堆栈导航器的导航选项
问题描述
使用带有反应导航的反应本机,我使用了一个 DrawNavigator 和几个 StackNavigator。现在我想一次性为所有 StackNavigator 定义 StackNavigator 的标题样式(StackNavigator 附带的标题)。
这就是我所拥有的:
// View1.js
export default StackNav1 = createStackNavigator(
{
View1: View1Screen,
View2: View2Screen
},
{
defaultNavigationOptions: ({ navigation }) => {
return {
headerStyle: {
backgroundColor: '#9eb9b3',
},
headerTintColor: '#fff',
headerTitleStyle: {
fontWeight: 'bold',
},
headerLeft: (
<Icon style={{ paddingLeft: 10 }} name="bars" size={30}
onPress={() => navigation.dispatch(DrawerActions.toggleDrawer())}
/>
),
}
}
}
)
// View2.js
export default StackNav2 = createStackNavigator(
{
View3: View3Screen,
View4: View4Screen
},
// here I need to define the style from View1.js again ?!
)
有没有比一遍又一遍地写更聪明的解决方案来分享外观。
当应用程序扩展时,我可能会有很多 StackNavigators 并希望它们具有相同的标题/外观。
我很欣赏你的想法!
解决方案
创建stackNavigatorConfig
这是反应导航方法的第二个参数。
stackNavigatorConfig = {
defaultNavigationOptions: ({ navigation }) => {
return {
headerStyle: {
backgroundColor: '#9eb9b3'
},
headerTintColor: '#fff',
headerTitleStyle: {
fontWeight: 'bold'
},
headerLeft: (
<Icon
style={{ paddingLeft: 10 }}
name="bars"
size={30}
onPress={() => navigation.dispatch(DrawerActions.toggleDrawer())}
/>
)
};
}
};
然后你可以像这样使用它
export default StackNav1 = createStackNavigator({
View1: View1Screen,
View2: View2Screen
},
stackNavigatorConfig);
export default StackNav2 = createStackNavigator({
View3: View3Screen,
View4: View4Screen
},
stackNavigatorConfig);
推荐阅读
- r - 当我运行代码块时,一切正常,但是当我尝试编织时出现错误
- java - 为什么当我在我的舞台中调试作为 Actor 的表时,小部件方向会被镜像
- ubuntu - 谁能告诉我tomcat 9中server.xml中的AUTOBIND在哪里,如附件答案中所述
- apache-kafka - 如何使用 spring-boot EmbeddedKafka 对 KStream 拓扑进行集成测试?
- python - 未找到参数“(”,)“的“调查分析”的反向。尝试了 1 种模式:['surveyanalysis/(?P
[0-9]+)/$'] - java - 如何使用可选返回使 Jpql 查询在 Spring Jpa 存储库中工作?
- mysql - 在 MySQL 中,执行 5 个字段的插入和执行 30 个字段的插入有什么性能差异?
- python - 如何对列表进行排序以在大写字母之前获取所有小写字母单词?
- json - 使用fromMap在flutter中映射来自firebase文档的嵌套对象
- apache-spark - 使用 PySpark 组合 Spark 模式而不重复?