无法通过导航导航发送params

时间:2018-05-09 09:19:34

标签: react-native react-navigation

我想通过路由器将登录界面的参数名称发送到主屏幕,但未定义数据对象

  

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',
      },
  });

任何想法?

1 个答案:

答案 0 :(得分:0)

  

SwitchNavigator的目的是一次只显示一个屏幕。默认情况下,它不处理后退操作,并在您切换时将路由重置为其默认状态。

您最好不要使用SwitchNavigator,您可以看到correct example

你最好判断params是否为空:

const params = navigation.state.params || {};
const title = params.name || 'default title';