Как передать и получить значение ключа из навигационных параметров в createStackNavigator реагирует на нативный - PullRequest
0 голосов
/ 15 мая 2019

Мы пытаемся передать значение ключа из stacknavigator через навигационные опции, но оно становится неопределенным.

Я использую следующую версию реакции-навигации

"react-navigation": "^3.0.9",

const Stack = createStackNavigator(
  {
    Mobile: { screen: Mobile, navigationOptions: { header: null, Key: true } },
    Login: { screen: Login, navigationOptions: { header: null } },
    DB: { screen: DB, navigationOptions: { header: null } },
  },
  {
    initialRouteName: 'Mobile',
  },
);

Но, пытаясь получить доступ к значению этого ключа, получаю неопределенное.

  componentDidMount() {
    const { navigation } = this.props;
    const key = JSON.stringify(navigation.getParam('key'));
}

Есть предложения?

1 Ответ

0 голосов
/ 15 мая 2019

Чтобы использовать getParam, вам нужно сначала setParams. Вы можете указать ключ в компоненте, где вы создали переменную stack.

В приведенном ниже примере я использовал setParam в том же компоненте. Вызывается функция getParam, которая печатает параметр name при нажатии на TouchableOpacity в компоненте Mobile.

class Mobile extends Component {
  componentDidMount() {
    const { navigation } = this.props;
    navigation.setParams({ name: 'Lucy' });
  }
  render() {
    return (
      <View>
        <Text>Mobile</Text>
        <TouchableOpacity
          style={{backgroundColor: 'red', height: 200, width: 200}}
          onPress={() => console.log(this.props.navigation.getParam('name'))}
        />
      </View>
    );
  }
}

Вы можете обратиться к документации в разделе setParam: https://reactnavigation.org/docs/en/navigation-prop.html

...