В качестве обходного пути с моей настройкой навигации мне пришлось в конечном итоге перейти к дочернему навигатору, прежде чем перейти к маршруту на этом навигаторе (я переходил от родительского навигатора к дочернему навигатору).Когда дочерний навигатор загружается изначально, он загружает CameraScreen.js
, но мне нужно было перейти к RentableScreen.js
, который является экраном на дочернем навигаторе с CameraScreen.js
.Я использовал CameraScreen.js
, чтобы добраться до RentableScreen.js
из основного App
навигатора (HomeScreen.js
).Я сделал это, используя addListener
для прослушивания, когда страница сфокусирована, и он получает параметр, сообщая ему продолжить на RentableScreen.js
, а затем переходит на RentableScreen.js
- код для этого приведен ниже:
CameraScreen.js
...
componentDidMount() {
this._sub = this.props.navigation.addListener(
'didFocus',
() => {
if(this.props.navigation.getParam('param', '') === 'RentTab') {
console.log('I HEARD YOU');
this.navigator && this.navigator.dispatch(
NavigationActions.navigate({
routeName: 'Rentable',
})
);
}
}
);
}
...
Все это работает правильно, но похоже, что параметр, который я передаю, получает«застрял» на CameraScreen.js
, потому что в следующий раз, когда я пытаюсь перейти к нему (нажав на вкладку на TabNavigator
), он действует так, как если бы я отправлял ему параметр, который он получил ранее, но это не так.Кажется, что параметр где-то сохраняется / хранится - как мне его очистить?Или как сделать так, чтобы addListener
не обращал внимания при приходе с TabNavigator
?