не могу отправить параметры через навигацию навигация - PullRequest
0 голосов
/ 09 мая 2018

Я хочу отправить имя параметра с экрана входа на домашний экран через маршрутизатор, но объект данных не определен

Ошибка типа: 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 голосов
/ 11 мая 2018

Цель SwitchNavigator - показывать только один экран за раз. По умолчанию он не обрабатывает обратные действия и сбрасывает маршруты в их состояние по умолчанию при переключении.

Вам лучше не использовать SwitchNavigator, вы можете увидеть правильный пример .

И вам лучше судить, params пусто или нет:

const params = navigation.state.params || {};
const title = params.name || 'default title';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...