无法在Redux中获取存储值

时间:2019-09-30 07:56:15

标签: redux react-redux

我需要将2个对象保存在用户和客户商店中。因此,我创建了动作,reduce和存储如下。

export const ADD_USER = "ADD_USER";

export const ADD_CUSTOMER = "ADD_CUSTOMER";

这是我的动作文件,而我的减速器如下所示

import { ADD_USER, EDIT_USER } from '../actions';

 const userReducer = (state = [], action) => {
  switch (action.type) {
    case ADD_USER:
      state.user = {...state.user, user: action.payload};
      return state

    default:
      return state;
  }
}

export default userReducer;

这是我的根减少剂

import { combineReducers } from 'redux';
import userReducer from './user';
import customerReducer from './customer';

const rootReducer = combineReducers({
  user: userReducer,
  customer: customerReducer
});

export default rootReducer;

我这样称呼减速器

store.dispatch({
      type: ADD_USER,
      payload: user,
    })

工作正常。但是如果我需要从存储中获取数据,以便需要这样调用

let store = store.getState();
console.log(store.user) is not working
console.log(store.user.user) is working.

如何避免此嵌套级别。我需要像这样从商店中获取用户

store.user

有人可以帮助解决此问题吗?

预先感谢

2 个答案:

答案 0 :(得分:2)

有一个问题,因为您在rootReducer中在状态内创建了 user 参数。之后,您尝试在 userReducer 中添加另一个 user 参数。这就是为什么您使用嵌套对象创建问题的原因。

解决问题的简便方法:

import { ADD_USER, EDIT_USER } from '../actions';

const userReducer = (state = [], action) => {
  switch (action.type) {
    case ADD_USER:
      state.user = {...state, action.payload};   //there is a fix
      return state

    default:
      return state;
  }
}

export default userReducer;

答案 1 :(得分:1)

您应该在化简器中返回一个新的整体状态,以这种方式更新您的化简器文件

import { ADD_USER, EDIT_USER } from '../actions';

 const userReducer = (state = [], action) => {
  switch (action.type) {
    case ADD_USER:
      return {
        ...state,
        user: action.payload
      }
    default:
      return state;
  }
}

export default userReducer;