我学习了如何使用Teropa's incredible tutorial还原。但是,他的实现使用Immutable,虽然很棒,但是我想从当前应用的构建中删除它。我试图弄清楚如何在不依赖Immutable的情况下维护以下内容。我以某种方式需要修改reducer.js以取出不可变的,但是没有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;
}

最佳答案

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中使用它

关于javascript - 如何在React中设置Redux而没有不可变?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38654252/

10-12 12:51
查看更多