我正在尝试将我的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并重新安装的建议,但这没有帮助。我在这里做错了什么?
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
});