React native 通知打开时的路由

React native 通知打开时的路由,react-native,push-notification,React Native,Push Notification,Im通过wix使用react本机通知。 当通知打开时,我无法路由到特定屏幕。我试过这样做。但这给了我一个错误 import React, { Component } from 'react'; import AppNavigator from './navigation/AppNavigator'; import NetInfo from "@react-native-community/netinfo"; import AppNavigator from './navigation/AppNa

Im通过wix使用react本机通知。
当通知打开时,我无法路由到特定屏幕。我试过这样做。但这给了我一个错误

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>
 );
 }
}
import React,{Component}来自'React';
从“./navigation/AppNavigator”导入AppNavigator;
从“@react native community/NetInfo”导入NetInfo;
从“./navigation/AppNavigator”导入AppNavigator;
从“react navigation”导入{NavigationActions};
让"航海家",;
函数setTopLevelNavigator(navigatorRef){
_navigator=navigatorRef;
}
功能导航(routeName、params){
_导航器调度(
导航({
罗特奈,
params,
})
);
}
导出默认类应用程序扩展组件{
建造师(道具){
超级(道具)
const unsubscribe=NetInfo.addEventListener(状态=>{
日志(“连接类型”,state.type);
日志(“是否已连接?”,状态为.isConnected);
导航(“评级”);
});
Notifications.events().registerNotificationOpened((通知、操作、,
完成)=>{
console.log(“设备用户打开的通知”,
通知(有效载荷);
});
render(){
返回(
{setTopLevelNavigator(navigatorRef)
}}/>
);
}
}

第1步:首先创建一个变量来像这样保存navigator,将其放在导入下面的App.js顶部

let _navigator;
function setTopLevelNavigator(navigatorRef) {
  _navigator = navigatorRef;
}
第2步:然后像这样向AppNavigator添加一个ref属性

ref={navigatorRef => { setTopLevelNavigator(navigatorRef); }}
步骤3:编写导航函数,您可以在OnNotificationReceived中调用该函数

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> });
    })
}
构造函数(道具){
超级(道具)
Notifications.events().registerNotificationOpened((通知、操作、完成)=>{
导航(“YOURSCREEN”{params:});
})
}
PS:别忘了从“react National”导入导航操作