我想导航当在createStackNavigator中单击TouchableOpacity时。但是我做不到。
返回给我导航不是功能
我该怎么做?
const RootStack = createStackNavigator(
{
Login:{screen: Login },
EditProfile:{screen:EditProfileScreen},
Main:{screen: MainScreen , navigationOptions: {
headerTitle: (
<View style={{flexDirection:'row', width:100+"%"}}>
<TouchableOpacity style={{width:36,height:40,position:"absolute",right:10}}
onPress={()=> createStackNavigator.navigate("EditProfile")}
>
<AutoHeightImage width={36} source={require('./img/user.png')}/>
</TouchableOpacity>
</View>
),
headerLeft: null,
headerTintColor: "white",
headerStyle: {
backgroundColor: '#34495e'
} }},
}, { initialRouteName:"Login "});
答案 0 :(得分:2)
您处在正确的轨道上,但是您在代码中进行了一些小小的监督。
在为每个屏幕声明navigationOptions
时,必须确保传递navigation
参数,以便可以在navigationOptions
代码块中调用它。
react-navigation
文档here
示例:
createStackNavigator({
Profile: {
screen: ProfileScreen,
navigationOptions: ({ navigation }) => ({
title: ${navigation.state.params.name}'s Profile'`,
}),
},
});
请注意({navigation})
属性中的navigationOptions
参数。
对于您而言,您的代码需要对此进行编辑:
Main: {
screen: MainScreen,
navigationOptions: ({ navigation }) => ({
headerTitle: (
<View style={{ flexDirection: 'row', width: 100 + '%' }}>
<TouchableOpacity
style={{ width: 36, height: 40, position: 'absolute', right: 10 }}
onPress={() => navigation.navigate('EditProfile')}
>
<AutoHeightImage width={36} source={require('./img/user.png')} />
</TouchableOpacity>
</View>
),
}),
}
3我需要更改的注意事项:
({navigation})
已作为参数添加到navigationOptions
。(
时在{
之前使用navigationOptions
。以及随后的右括号。onPress
函数也进行了更改,以利用navigation
参数。 希望这会有所帮助! :)