Маршрут по уведомлению открыт - PullRequest
0 голосов
/ 17 февраля 2020

Я использую реагирующую нативную-уведомления от wix.
У меня проблемы с маршрутизацией на указанный c экран при открытии уведомления. Я пытался после этого https://reactnavigation.org/docs/en/navigating-without-navigation-prop.html. Но это дает мне ошибку.

import React, { Component } from 'react';
import AppNavigator from './navigation/AppNavigator';
import NetInfo from "@react-native-community/netinfo";
import AppNavigator from './navigation/AppNavigator';
import { NavigationActions } from 'react-navigation';

let _navigator;
function setTopLevelNavigator(navigatorRef) {
_navigator = navigatorRef;
}

function navigate(routeName, params) {
_navigator.dispatch(
 NavigationActions.navigate({
  routeName,
  params,
  })
 );
 }

export default class App extends Component {
constructor(props) {
super(props)

const unsubscribe = NetInfo.addEventListener(state => {
  console.log("Connection type", state.type);
  console.log("Is connected?", state.isConnected);
  navigate("Rating");
});

Notifications.events().registerNotificationOpened((notification, action, 
completion) => {
  console.log("Notification opened by device user", 
notification.payload);
});

render() {
return (
  <Provider store={store}>
    <Root>
       <AppNavigator ref={navigatorRef => {setTopLevelNavigator(navigatorRef) 
  }}/>
    </Root>
  </Provider>
 );
 }
}

1 Ответ

0 голосов
/ 17 февраля 2020

Шаг 1: сначала создайте переменную для удержания навигатора, например, поместите ее поверх приложения. js ниже импорта

let _navigator;
function setTopLevelNavigator(navigatorRef) {
  _navigator = navigatorRef;
}

Шаг 2: Затем добавьте свойство ref в свой AppNavigator, как this.

ref={navigatorRef => { setTopLevelNavigator(navigatorRef); }}

Шаг 3: Напишите функцию навигации, которую вы можете вызвать внутри onNotificationRecevied

function navigate(routeName, params) {
  _navigator.dispatch(
    NavigationActions.navigate({
      routeName,
      params,
    })
  );
}

Шаг 4: Навигация пользователя при получении уведомления

constructor(props) {
    super(props)
    Notifications.events().registerNotificationOpened((notification, action, completion) => {
        navigate("YOURSCREEN", { params:<date-from-notification-or-any-data> });
    })
}

PS: не забудьте импортировать действия NavigationActions из'act-natigation '

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