TypeError:0,_redux.combineReducers 不是一个函数(未定义)

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

我正在尝试将我的react-native项目(使用Expo SDK 52)上的redux升级到这些版本:

react-redux    8.0.7   ❯  9.1.2
redux          4.2.1   ❯  5.0.1
redux-thunk    2.4.2   ❯  3.1.0

尝试在 Expo Go 中运行该应用程序时,遇到以下错误:

TypeError: 0, _redux.combineReducers is not a function (it is undefined)

这是商店设置 - 它与所有当前版本(redux 8)完美配合。文件路径为

src/ducks/store.js
:

import { createStore, combineReducers, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';

const rootReducer = combineReducers({
  // list of reducers here
});

export default createStore(rootReducer, applyMiddleware(thunk));

我只找到了删除node_modules并重新安装的建议,但这没有帮助。我在这里做错了什么?

react-native redux react-redux expo
1个回答
0
投票

Thunk 现在是 v3 中的命名导出,即

import { thunk } from 'redux-thunk';

import { createStore, combineReducers, applyMiddleware } from 'redux';
import { thunk } from 'redux-thunk';

const rootReducer = combineReducers({
  // list of reducers here
});

export default createStore(rootReducer, applyMiddleware(thunk));

但是无论如何,你现在确实应该使用 Redux-Toolkit,这样你就可以编写这十年来的现代 Redux。 RTK默认包含Thunk中间件。

createStore
中的
redux
也被标记为已弃用。

查看迁移到 Modern Redux 以获取完整的详细信息。

使用 Redux 工具包:

import { configureStore, combineReducers } from '@reduxjs/toolkit';

const rootReducer = combineReducers({
  // list of reducers here
});

export default configureStore({
  reducer: rootReducer
});
© www.soinside.com 2019 - 2024. All rights reserved.