反应本机NavigationService-TypeError:null不是一个对象(正在评估't.dispatch')

时间:2019-09-14 04:10:52

标签: react-native navigation navigationservice

有时候,应用程序在后台接收通知时会崩溃。确切的问题-该应用程序在后台运行。通知发送到应用程序。收到通知后,App会尝试唤醒电话并导航到特定屏幕。有时,应用程序崩溃。我能够捕获该错误:

TypeError:null不是一个对象(正在评估“ t.dispatch”)

此错误位于:     旅店     在RCTView中     在RCTView中     在未知     在RCTView中     在c

在代码内部,这就是我正在做的事情:

在App.js中创建堆栈导航器

const LoadingStack = createStackNavigator(.....)
const AuthStack = createStackNavigator(....)
const RootStack = createStackNavigator(...)

然后创建AppContainer:

const AppContainer = createAppContainer(
  createSwitchNavigator(
    {
      AuthLoading: LoadingStack,
      App: RootStack,
      Auth: AuthStack,
    },
    {
      initialRouteName: 'AuthLoading',
    }
  )
);

基于某些条件的内部类应用程序,我将其称为NavigationService.navigate。

export default class App extends React.Component {

<lines of code>

             NavigationService.navigate('Home');

<lines of code>

}

渲染中:

  render() {    
    return <AppContainer
    ref={navigatorRef => {
      NavigationService.setTopLevelNavigator(navigatorRef);
    }}
  />
  }


// NavigationService.js

import { NavigationActions } from 'react-navigation';

let _navigator;

function setTopLevelNavigator(navigatorRef) {
  _navigator = navigatorRef;
}

function navigate(routeName, params) {
  console.log("Inside Navigation service. routeName: " + routeName);
  _navigator.dispatch(
    NavigationActions.navigate({
      routeName,
      params,
    })
  );
}

//添加所需的其他导航功能并将其导出

export default {
  navigate,
  setTopLevelNavigator,
};

0 个答案:

没有答案