k16*_*yle 3 reactjs react-redux
我正在使用 React 制作 SPA。我希望页面刷新后状态保持不变,所以我使用了“redux-persist”。我不知道我的 import 'allReducers' 是否错误,因为我收到的消息是 TypeError: baseReducer is not a function
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './components/App.jsx';
import * as serviceWorker from './serviceWorker';
import {Provider} from 'react-redux';
import {applyMiddleware, combineReducers, createStore} from "redux";
import {persistReducer, persistStore} from 'redux-persist';
import allReducers from './redux/store'
import {PersistGate} from 'redux-persist/integration/react';
import storage from 'redux-persist/lib/storage';
import thunk from "redux-thunk";
const persistConfig = {
key: 'root',
storage,
};
const persistedReducer = persistReducer(persistConfig, allReducers);
let store = createStore(persistedReducer, applyMiddleware(thunk));
let persistor = persistStore(store);
ReactDOM.render(<Provider store={store}>
<PersistGate loading={null} persistor={persistor}>
<App />
</PersistGate>
</Provider>, document.getElementById('root'));
Run Code Online (Sandbox Code Playgroud)
但最后当页面呈现时,我收到此消息TypeError: baseReducer is not a function
这是./redux/store
import { applyMiddleware, combineReducers, createStore } from 'redux'
import { ADD_TO_CART, GET_COURSE_LIST, USUARIO_LOGIN } from './action'
import { composeWithDevTools } from 'redux-devtools-extension'
import { persistStore, persistReducer } from 'redux-persist'
import thunk from 'redux-thunk'
const initialCart = {
cart:[]
}
const initialCourses ={
courses:[]
}
const initialUser ={
user:{}
}
const cartReducer = ( state = initialCart,action) => {
console.log(action)
if(action.type===ADD_TO_CART)
{
if(state.cart.find(c=>c===action.id))
{
return state
}
return{
...state,
cart: state.cart.concat(action.id),
}
}
return state
}
const coursesReducer = (state=initialCourses, action) =>{
console.log(action)
if(action.type === GET_COURSE_LIST){
return {
...state,
courses: action.courses
}
}
return state
}
const userReducer = (state=initialUser, action)=>{
console.log(action)
if(action.type === USER_LOGIN){
return {
...state,
user: action.user
}
}
return state
}
const storage = createStore(combineReducers({cartReducer, coursesReducer, userReducer}), composeWithDevTools(applyMiddleware(thunk)))
export default storage
Run Code Online (Sandbox Code Playgroud)
该persistReducer函数需要一个减速器,而不是一个存储。
您可以单独从存储文件中导出您的减速器,或者如果您仅使用持久存储,则将其导出为默认值。下面是单独导出的示例:
./redux/store:
export const rootReducer = combineReducers({cartReducer, coursesReducer, userReducer})
const store = createStore(rootReducer, composeWithDevTools(applyMiddleware(thunk)))
export default store
Run Code Online (Sandbox Code Playgroud)
您的根组件文件:
import { rootReducer } from './redux/store'
// ...
const persistedReducer = persistReducer(persistConfig, rootReducer);
const store = createStore(persistedReducer, applyMiddleware(thunk));
const persistor = persistStore(store);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10045 次 |
| 最近记录: |