React Native получить объект навигации вне компонента экрана
Мне нужно иметь возможность перемещаться и сбрасывать стек навигации из модулей, которые не обязательно являются компонентами экрана. Это значит, я не могу использовать:
const {navigate} = this.props.navigation;
В моем случае мне нужно правильно перенаправить пользователя на нужный экран, когда он нажимает на push-уведомление. У меня есть только обратный звонок:
onNotification: function(notification) {
// show correct screen and reset navigation stack
}
Мне просто нужно больше гибкости с навигацией. Так как я могу сделать это для моего случая?
2 ответа
Вот мое решение. Я реализовал базовый класс для всех экранов. При этом я всегда знаю, на каком экране я нахожусь, и всегда могу получить объект навигации, чтобы перенаправить пользователя при необходимости:
import React, {Component} from 'react';
export default class Base extends Component {
static screen;
constructor(props) {
super(props);
Base.screen = this;
}
nav() {
return this.props.navigation;
}
}
В каком-то другом компоненте / модуле я могу просто вызвать это, чтобы перейти на другой экран:
Base.screen.nav().navigate(...);
Я создал компонент экрана с поддержкой навигации, чтобы позаботиться об этом на экранах.
За пределами экрана вы можете получить прямой доступ к store.navigation. Я использовал это с редуксом в моем примере. Посмотрите, поможет ли это вам.