Передача реквизита с одного экрана на другой с помощью createBottomTabNavigator - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь передать некоторые свойства с одного экрана на другой через createBottomTabNavigator.Я использую реагировать-навигацию .

const AppNavigator = createBottomTabNavigator({
    Home: {screen: HomeScreen}, 
    Map: {screen: MapScreen}
}, {
    initialRouterName: 'Home',
});

на HomeScreen. Я установил опору с this.props.navigation.setParams в componentDidMount, и если я проверяю this.props.navigation на том же экране, егоотображается правильно.

componentDidMount() {
    navigator.geolocation.getCurrentPosition(
        position => {
            const location = JSON.stringify(position);
            this.props.navigation.setParams({position: location});
        },
        error => {
            Alert.alert(error.message);
        }, 
        { enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 }
    );
}

Мне нужно получить доступ к этим реквизитам на других экранах, таких как MapScreen, но на другом экране я получаю нулевое значение.

Я не уверен, что это правильный путь.Я знаю, что могу отправить с this.props.navigation.navigate, но, как вы видите, я использую tabNavigator , поэтому не уверен, с чего начать.

Ответы [ 2 ]

0 голосов
/ 28 января 2019

В домашнем компоненте используйте вот так,

this.props.navigation.navigate('Map',
      {
        name: 'Anand',
        mob : '90090'
      }
    );

А в компоненте карты вы можете использовать имя вот так.

this.props.navigation.state.params.name

И вКомпонент карты, вы можете использовать моб , как это.

this.props.navigation.state.params.mob
0 голосов
/ 28 января 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...