在react-navigation v3上,没有navigation prop调度的导航不是一个函数

问题描述 投票:0回答:2

我尝试在react-native v3.11.0上使用

Navigating without the navigation prop
上的示例。

但是我收到了这个错误:

TypeError: NavigationService._navigator.dispatch is not a function
    at Function.navigate (C:\...\NavigationService.js)

谁能帮我看看我的错误是什么?

更新

我的代码:

import React from 'react';
import {NavigationActions, StackActions} from 'react-navigation';

export default class NavigationService extends React.Component {
  static _navigator;

  static setTopLevelNavigator(navigatorRef) {
    NavigationService._navigator = navigatorRef;
  }

  static navigate(routeName, params = null) {
    let options = params == null ? {routeName} : {routeName, params};
      NavigationService._navigator.dispatch(NavigationActions.navigate(options));
  }
}

在 App.js 上:

  render() {
    return (
          <Navigation
            ref={(navigatorRef) => {
              NavigationService.setTopLevelNavigator(navigatorRef);
            }}
          />
    );
  }
react-native react-navigation
2个回答
0
投票

您的代码与文档不同。尝试使用文档中的代码

// NavigationService.js

import { NavigationActions } from 'react-navigation';

let _navigator;

function setTopLevelNavigator(navigatorRef) {
  _navigator = navigatorRef;
}

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

// add other navigation functions that you need and export them

export default {
  navigate,
  setTopLevelNavigator,
};

-1
投票

https://reactnavigation.org/docs/navigating-without-navigation-prop/ 这会对你有所帮助。明确的答案就在这里。

© www.soinside.com 2019 - 2024. All rights reserved.