javascript - 如何在嵌套的 tabNavigation 中编辑每个屏幕的 navigationOptions?
问题描述
我正在尝试在标题中显示标题,并在标题中显示正确的操作按钮。
导航.js
const FeedStack = createStackNavigator({
Welcome: {
screen: WelcomeScreen,
navigationOptions: {
headerTitle: 'Welcome',
},
},
Auth: {
screen: AuthScreen,
navigationOptions: {
headerTitle: 'Login',
},
},
}, {
defaultNavigationOptions: {
headerStyle: {
backgroundColor: Platform.OS === 'android' ? Colors.headerColor : 'white',
},
headerTintColor: Platform.OS === 'android' ? 'white' : Colors.secondaryColor,
},
});
const TabNavigator = createBottomTabNavigator({
DailyTask: {
screen: DailyTaskScreen,
navigationOptions: {
headerTitle: 'Daily Task',
},
},
MyTasks: {
screen: MyTasksScreen,
navigationOptions: {
headerTitle: 'My Tasks',
},
},
SelectCategory: {
screen: SelectCategoryScreen,
navigationOptions: {
headerTitle: 'Select Category',
},
},
}, {
defaultNavigationOptions: {
headerStyle: {
backgroundColor: Platform.OS === 'android' ? Colors.headerColor : 'white',
},
headerTintColor: Platform.OS === 'android' ? 'white' : Colors.secondaryColor,
},
});
const HomeStack = createStackNavigator({
Tabs: TabNavigator,
}, {
defaultNavigationOptions: {
headerStyle: {
backgroundColor: Platform.OS === 'android' ? Colors.headerColor : 'white',
},
headerTintColor: Platform.OS === 'android' ? 'white' : Colors.secondaryColor,
},
});
const AppNavigator = createSwitchNavigator({
Auth: FeedStack,
Home: HomeStack,
}, {
defaultNavigationOptions: {
headerStyle: {
backgroundColor: Platform.OS === 'android' ? Colors.headerColor : 'white',
},
headerTintColor: Platform.OS === 'android' ? 'white' : Colors.secondaryColor,
},
});
export default createAppContainer(AppNavigator);
Screen.js
DailyTaskScreen.navigationOptions = {
headerTitle: 'Daily Task',
headerRight: (
<HeaderButtons HeaderButtonComponent={HeaderButton}>
<Item
title='Category'
iconName='md-albums'
onPress={() => {
this.props.navigation.navigate('SelectCategory')
}}
/>
</HeaderButtons>
)
};
我需要做什么才能获得能够编辑 navigationOptions 的预期结果?
解决方案
要在标题右侧添加一个元素并在 onPress 上实现它,您可以这样做:
只需在要添加它的屏幕的 js 文件中的“导出默认类”下方添加此代码。
static navigationOptions = {
headerLeft: null,
headerRight: (
<TouchableOpacity
onPress={() => alert('This is a button!')}>
<Text style={{color: '#fff', marginRight:12, fontSize: 14}}>Done</Text>
</TouchableOpacity>
)
};
推荐阅读
- java - ArrayList 中的项目被替换而不是附加
- node.js - Mongoose Node - 请求对多个文档进行多次更新并全部成功或全部取消?
- python - 尝试将绝对 .m3u 路径转换为相对 .m3u 路径
- performance - 遇到低帧率和统一性能的问题?
- python - 在python中只大写句子的第一个字母,使用split函数
- regex - 在 dart 中以撇号开头和结尾的正则表达式字符串中转义撇号
- python - 如何广播或矢量化使用 scipy.ndimage map_coordinates 的二维数组的线性插值?
- python - 在 python 中使用 scipy.stats 时出错
- java - ListIterator - 一个按钮用于下一个,一个按钮用于上一个,但需要单击 2 次才能在列表上移动
- php - 关闭 mysqli 连接会产生:无法获取 mysqli_result