Я новичок в реакции-родной, поэтому извините, что не знаю основ.Для навигации мы используем промежуточное ПО ReduxNavigation и Thunk.Навигация работает абсолютно нормально со всех экранов.Однако теперь мне нужно зарегистрировать прослушиватель FCM для корневого компонента и перейти к определенному экрану при получении сообщения.Я сталкиваюсь с проблемами в том, как перейти от корневого компонента к компоненту экрана приложения
const middleware = createReactNavigationReduxMiddleware(
"root",
state => state.nav
);
const RduxifiedNavigator = reduxifyNavigator(AppNavigator, "root");
class ReduxNavigation extends Component<Props> {
componentDidMount() {
BackHandler.addEventListener("hardwareBackPress", this.onBackPress);
FCM.getInitialNotification().then(notif => {
console.log("notif: " + JSON.stringify(notif));
// if (notif) {
// //setTimeout(() => {
// dispatch(
// NavigationActions.navigate({ routeName: "Notification" })
// );
// //}, 500);
// }
});
}
componentWillUnmount() {
BackHandler.removeEventListener("hardwareBackPress", this.onBackPress);
}
onBackPress = () => {
const { navigation, dispatch } = this.props;
if (navigation.index === 0) {
return false;
}
dispatch(NavigationActions.back());
return true;
};
render() {
const { navigation, dispatch } = this.props;
return <RduxifiedNavigator state={navigation} dispatch={dispatch} />;
}
}
const mapStateToProps = state => ({
navigation: state.nav
});
const AppWithNavigationState = connect(mapStateToProps)(ReduxNavigation);
export const store = createStore(
AppReducer,
applyMiddleware(middleware, thunk)
);
export default class App extends Component<Props> {
render() {
return (
// <View></View>
<Provider store={store}>
<AppWithNavigationState />
</Provider>
);
}
}
Как мне перейти к некоторому экрану в приложении отсюда -
FCM.getInitialNotification().then(notif => { });
Я пытался использовать это.props.navigation.navigate (), однако метод навигации не определен в объекте навигации здесь в корневом объекте
Я также попытался диспетчеризация (NavigationActions.navigate ({routeName: "ROUTE_NAME"})), здесь диспетчеризацияотображается неопределенным