首页 > 解决方案 > React Native - addnavigationHelpers 未定义

问题描述

我对 react-native 相当陌生,并且在尝试设置我的 appNavigation 和 redux 时遇到了以下错误。

TypeError: (0, _reactNavigation.addNavigationHelpers) 不是函数。(在 '(0, _reactNavigation.addNavigationHelpers)({dispatch:dispatch, state: nav})' (0, _reactNavigation.addNavigationHelpers)' 中未定义。

代码-->

应用程序.js -

import React from 'react';

import store from './src/store';
import { Provider } from 'react-redux';
import 'react-native-gesture-handler';
import AppNavigation from './src/components/AppNavigator';

export default class App extends React.Component {
    render() {
        return (
            <Provider store={store}>
                <AppNavigation />
            </Provider>
        );
    }
}

AppNavigator.js -

import React from 'react';
import TodoApp from '../TodoApp';
import TodoDetails from '../components/TodoDetails';

import { connect } from 'react-redux';
import { addNavigationHelpers } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';

export const AppNavigator = createStackNavigator(
    {
        todoDetails: TodoDetails,
        home: TodoApp,
    },
    {
        initialRouteName: 'todoDetails',
    },
);

const AppNavigation = ({ dispatch, nav }) => (
    <AppNavigator navigation={addNavigationHelpers({ dispatch, state: nav })} />
);

const mapStateToProps = state => ({
    nav :state.nav,
});

export default connect(mapStateToProps)(AppNavigation);

编辑 -

我确实按照给出的步骤https://stackoverflow.com/questions/50246457/react-native-reactnavigation-addnavigationhelpers-in-not-a-function

但不幸的是,这给出了一个错误说法

TypeError: undefined is not an object (评估'state.routes')

错误位于: in Navigator (at AppNavigator.js:20) in AppNavigation (created by ConnectFunction) in ConnectFunction (at App.js:19)......

根据其他 StackOverflow 答案链接更改代码时收到错误

标签: react-nativereduxreact-reduxreact-navigation

解决方案


addNavigationHelpers已从 react-navigation 的默认导出中删除,

您需要直接添加到navigation道具中

<AppNavigator navigation={{
   dispatch: this.props.dispatch,
   state: this.props.nav,
   addListener,
}} />

pritish的一个很好的答案,希望它有帮助。


推荐阅读