替换 immutableJS 的 .set()

Replace .set() of immutableJS

我必须从 immutableJS 中清理我所有的项目,现在我的问题是如何替换

  return state.set('loaded', true);

如果我尝试

state.loaded = true 

ESlint 告诉我这个错误 Disallow Reassignment of Function Parameters (no-param-reassign

完整代码是这样

import { Map } from 'immutable';
import { APP_READY } from '../actions/appActions';
import { USER_LOGOUT } from '../actions/logoutActions';

const initialState = Map({
  loaded: false,
});

const appReducer = (state = initialState, action) => {
  switch (action.type) {
    case APP_READY:
      return state.set('loaded', true);
    case USER_LOGOUT:
      return state.set('loaded', true);
    default:
      return state;
  }
};

export default appReducer;

替换 .set of Immutable js 的最佳方法是什么?

你试过这个吗:

const appReducer = (state = initialState, action) => {
  switch (action.type) {
    case APP_READY:
     return {
        ...state,
        loaded: true
     };
    default:
      return state;
  }
};

虽然您可能会摆脱 ImmutableJS,但您的解析器仍然不能改变状态。您必须 return 一个新对象。这可以通过 { ...state, loading: true } 在 ES6 中完成,如果您使用的是旧版本的 EcmaScript,则可以使用 Object.assign({}, state, { loaded: true })