为除了传递Immutable JS的项目之外的每个项目设置一个值

时间:2018-05-16 19:58:05

标签: javascript reactjs immutable.js

我从ImmutableJS开始,我有以下redux:



import { fromJS } from 'immutable';

import {
    SET_MODAL_VISIBLE
} from './constants';

const initialState = fromJS({
  loginModal: 'none',
  registerModal: 'none',
  passwordModal: 'none',
});

function modalReducer(state = initialState, action) {
  switch (action.type) {
    case SET_MODAL_VISIBLE:
      return state
        .set(action.modal, 'block');
    default:
      return state;
  }
}

export default modalReducer;




我如何支持所有状态项目的“无”#39;除了" action.modal" ?我知道我可以使用

return initialState
       .set(action.modal, 'block');

但是使用initialState对我不好,因为状态会更多,我不想回到初始状态。

1 个答案:

答案 0 :(得分:0)

我假设action.model是一个字符串,因此您可以从您所在的州获取所有密钥并将其设置为" none"除了使用reduce:

的action.model键
[...state.keys()].reduce(
  (state,key)=>
    (key===action.model)
      ? state.set(key,"block")
      : state.set(key,"none"),
  state
);