我用Redux工具包创建了一个商店,我把每一个东西都设置成与官方文档所描述的相似,但是我仍然面临着以下错误
Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.
这是我的Index.jsx文件,安装程序在其中提供了存储状态
import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App'
import './index.css'
import { store } from './store/store'
import { Provider } from 'react-redux'
ReactDOM.createRoot(document.getElementById('root')).render(
<React.StrictMode>
<Provider store={store}>
<App />
</Provider>,
</React.StrictMode>,
)
store.js文件
import { configureStore } from '@reduxjs/toolkit';
import userDataReducer from '../utils/UserDataSlice'
export const store = configureStore({
reducer: {
userData : userDataReducer
}
});
实用程序中的userDataSlice文件
import { createSlice } from '@reduxjs/toolkit';
const userDataSlice = createSlice({
name: 'userData',
initialState: {
user_data: []
},
reducers: {
setUserData: (state, action) => {
state.user_data = action.payload;
},
getUserData: (state) => {
return state.user_data;
}
}
});
export const { setUserData, getUserData } = userDataSlice.actions;
export default userDataSlice.reducer;
我无法确定是什么问题,看起来很好,但我得到了我上面提到的错误
1条答案
按热度按时间yhqotfr81#
看起来您从userDataSlice文件导出userDataReducer的方式可能存在问题。
在store.js文件中,您要导入userDataReducer作为默认导出:
import userDataReducer from '../utils/UserDataSlice'
但在userDataSlice文件中,将userDataReducer导出为命名导出:
export default userDataSlice.reducer;
尝试更改userDataSlice文件中的export语句,将userDataReducer导出为命名导出:
export const userDataReducer = userDataSlice.reducer;
然后更新store.js文件中的import语句,将userDataReducer作为命名导出导入:
import { userDataReducer } from '../utils/UserDataSlice'