【问题标题】:On Redux: How can I change the state of a boolean within an array?在 Redux 上:如何更改数组中布尔值的状态?
【发布时间】:2019-04-13 03:47:37
【问题描述】:

通常我会在 Reducer 上看到这样的东西:

const initialState = {
  thisIsBoolean: false,
};

const handlers = {
  [ActionTypes.CARD_SELECTED](state, action) {
    return {
      ...state,
      thisIsBoolean: !state.thisIsBoolean,
    };
  },
};

export default createReducer(initialState, handlers);

行动:

export const booleanExample = () => ({
  type: ActionTypes.CARD_SELECTED,
});

但我现在需要做这样的事情: 减速机:

const initialState = {
  stepOneCardSelected: [
    { index: 0, isDone: false },
    { index: 1, isDone: false },
    { index: 2, isDone: false },
    { index: 3, isDone: false },
  ],
};

const handlers = {
  [ActionTypes.CARD_SELECTED](state, action) {
    return {
      ...state,
      stepOneCardSelected: action.payload.stepOneCardSelected,
    };
  },
}

行动:

export const stepOneCardSelectedAction = stepOneCardSelected => ({
  type: ActionTypes.CARD_SELECTED,
  payload: { stepOneCardSelected },
});

所以我需要做一些事情来返回状态并在stepOneCardSelected 中切换isDone 属性。

我能做什么?

【问题讨论】:

    标签: javascript reactjs ecmascript-6 redux react-redux


    【解决方案1】:

    您可以通过selectedCard 映射状态并切换isDone

    const initialState = {
      stepOneCardSelected: [
        { index: 0, isDone: false },
        { index: 1, isDone: false },
        { index: 2, isDone: false },
        { index: 3, isDone: false },
      ],
    };
    
    const handlers = {
      [ActionTypes.CARD_SELECTED](state, action) {
        return {
          ...state,
          stepOneCardSelected: state.stepOneCardSelected.map(({index,isDone})=>({index,isDone: !isDone}))
        };
      },
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 2018-05-21
      • 2021-09-23
      • 2020-02-10
      • 1970-01-01
      • 2017-04-04
      • 1970-01-01
      相关资源
      最近更新 更多