如何在没有不可变的情况下在React中设置Redux?

时间:2016-07-29 08:39:29

标签: javascript reactjs redux immutable.js

我学会了如何使用Teropa's incredible tutorial进行Redux。但是,他的实现使用了Immutable,虽然很棒,但是我想从我当前应用程序的构建中删除它。我试图弄清楚如何在不依赖于Immutable的情况下维护以下内容。我不知何故需要修改reducer.js以取出Immutable,但导出的函数在没有state = Map()的情况下仍会失败。

Index.jsx

store.dispatch({
  type: 'SET_STATE',
  state: { ... }
});

action_creators.js

export function setState(state) {
  return {
    type: 'SET_STATE',
    state
  };
}

reducer.js

import { Map } from 'immutable';

function setState(state, newState) {
  return state.merge(newState);
}
export default function(state = Map(), action) {
  switch (action.type) {
  case 'SET_STATE':
    return setState(state, action.state);
  }
  return state;
}

1 个答案:

答案 0 :(得分:1)

function setState(state, newState) {
  return {
    ...state,
    ...newState
  };
}
export default function(state = {}, action) {
  switch (action.type) {
  case 'SET_STATE':
    return setState(state, action.state);
  }
  return state;

检查我在状态管理库https://github.com/nosovsh/reduceless/blob/master/src/wrapReducerWithSetGlobalState.js#L9

中的使用方式