我想通过路由器将登录界面的参数名称发送到主屏幕,但未定义数据对象
TypeError:undefined不是对象(评估 ' navigation.state.params.name'
登录屏幕
<TouchableOpacity
style={styles.buttonContainer}
onPress={() => this.props.navigation.navigate('Home', { name: 'Erry' })}>
<Text style={styles.buttonText}>MASUK</Text>
</TouchableOpacity>
我的路由器
export const LoginStack = SwitchNavigator({
Login: {
screen: Login,
},
Home: {
screen: HomeStack
}
}, {
headerMode: 'none',
navigationOptions: {
headerVisible: false,
}
});
export const HomeStack = StackNavigator({
Home: {
screen: Home
}
});
主屏幕
static navigationOptions = ({navigation}) => ({
title: `${navigation.state.params.name}`,
headerStyle : {
backgroundColor: '#f39c12',
},
headerTitleStyle :{
color: '#353b48',
},
});
任何想法?
答案 0 :(得分:0)
SwitchNavigator的目的是一次只显示一个屏幕。默认情况下,它不处理后退操作,并在您切换时将路由重置为其默认状态。
您最好不要使用SwitchNavigator
,您可以看到correct example。
你最好判断params
是否为空:
const params = navigation.state.params || {};
const title = params.name || 'default title';