【问题标题】:Redux change a reducer of type objectRedux 改变了一个类型为 object 的 reducer
【发布时间】:2021-04-27 15:40:51
【问题描述】:

所以我有以下减速器

const objectType = (state = {type: 0, image:defaultImage, moreOptions: {tap: 0, griff: 0} },
    action) => {....

case 'CHANG_OPTIONS':
      return state = {...state, moreOptions: {tap:action.tap, griff: action.griff}}

这是动作,所以我得到一个动态类别并分配产品的 id。

export const changeOptions = (category, id) => {
    return {
        type: 'CHANG_OPTIONS',
        [category]: id,
    }
}

调度的一个例子是

dispatch(changeOptions('tap', 0))

现在,每当我点击一个水龙头或一个 griff 时,我的对象都会从列表中删除另一个类别。

这是 Redux Debugger 工具的截图

我确定问题出在我的减速器上: moreOptions: {tap:action.tap, griff: action.griff} 有没有办法传播对象并仅更新已更改的对象?

【问题讨论】:

    标签: reactjs object redux reducers


    【解决方案1】:

    这是因为您同时覆盖了 tapgriff 值,而不管它们的输入值如何。试试下面。

    const newOptions = {};
    if (action.tap) {
      newOptions.tap = action.tap;
    }
    if (action.griff) {
      newOptions.griff = action.griff;
    }
    return (state = {
      ...state,
      moreOptions: {
        ...state.moreOptions,
        ...newOptions
      }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-27
      • 2018-12-21
      • 1970-01-01
      • 1970-01-01
      • 2022-07-31
      • 1970-01-01
      • 1970-01-01
      • 2017-10-02
      相关资源
      最近更新 更多