代码之家  ›  专栏  ›  技术社区  ›  pageNotfoUnd

无法从redux存储区存储和检索状态

  •  0
  • pageNotfoUnd  · 技术社区  · 6 年前
    import * as actions from '../actions/login.Action';
    
    let initialState = {
        user: {
            loggedIn: false,
            userRole: "",
            userEmail: "",
        }
    };
    
    export default function (state = initialState, action) {
        switch (action.type) {
            case actions.LOGIN_SUCCESS:
                return {
                    ...state,
                    user: {
                        ...state.user,
                        loggedIn: true,
                        userRole: action.userRole,
                    }
                };
    
            case actions.LOGOUT:
                return initialState;
    
            default:
                return state;
        }
    }
    

    这是我的减速器动作后触发的 登录成功 下面是我的商店代码

    import { createStore, applyMiddleware, compose } from 'redux';
    //import createSagaMiddleware from 'redux-saga';
    import { routerMiddleware } from 'react-router-redux';
    import thunk from 'redux-thunk';
    import createHistory from 'history/createBrowserHistory';
    import rootReducer from './reducers';
    
    const enhancers = [];
    const middleware = [
        thunk,
        routerMiddleware(history)
    ];
    
    export const history = createHistory();
    
    const composedEnhancers = compose(
        applyMiddleware(...middleware),
        ...enhancers
    );
    
    export const store = createStore(
        rootReducer,
        persistedState,
        composedEnhancers
    );
    
    
    const persistedState = localStorage.getItem('state') ? JSON.parse(localStorage.getItem('state')) : {};
    
    
     store.subscribe(() => {
         localStorage.setItem('reduxState', JSON.stringify(store.getState()));
     });
    

    在这种情况下,我可以从reducer获取值,但问题是页面刷新时状态值变空这段代码有什么问题我无法确定为什么存储不保存状态

    1 回复  |  直到 6 年前
        1
  •  1
  •   MBehtemam Erick    6 年前

    我想你先打电话 persistedState 然后定义如下:

    export const store = createStore(
    rootReducer,
    persistedState,
    composedEnhancers
    );
    
    
    const persistedState = localStorage.getItem('state') ? 
    JSON.parse(localStorage.getItem('state')) : {};
    

    换个位置怎么样 持久状态 在那之后你有:

    const persistedState = localStorage.getItem('state') ? 
    JSON.parse(localStorage.getItem('state')) : {};
    export const store = createStore(
      rootReducer,
      persistedState,
      composedEnhancers
     );