【问题标题】:How to delete nested element in map Immutable.js如何删除地图 Immutable.js 中的嵌套元素
【发布时间】:2021-04-30 07:38:30
【问题描述】:

在我的 redux 案例中,我的结构如下:

initialState: SearchState = fromJS({
  isFiltersPanelOpen: false,
  sections: {
    type: {       Course: {
        isSelected: false,
        filterValues: 42,
      },
      Path: {
        isSelected: false,
        filterValues: 12,
      },
      Resources: {
        isSelected: false,
        filterValues: 11,
        }
     }
  }
})

我必须删除资源。我使用了 deleteIn,但我遇到了问题。当其他情况起作用时,它们会获得初始值,并且我删除的资源会恢复生机。如果我理解正确,我应该使用 update/updateIn,然后使用 delete/deletIn。我需要一些例子。

【问题讨论】:

  • 嘿,请向我们展示您尝试删除代码的实际代码。没有它,我假设您忘记分配 mutator 的返回值(deleteIn、updateIn...)。请记住,不可变对象从不改变,突变总是导致返回一个新的对象。

标签: javascript reactjs redux immutable.js


【解决方案1】:

我在这里盲目回答。没有看到任何代码,问题可能是修改后的状态没有应用。

请记住,不可变对象永远不会改变,突变总是会导致返回一个新对象。因此,如果您忘记返回/应用返回的对象,您的更改就会丢失。

const reducer = createReducer(initialState, {
    deleteSection: (state, { id }) => {
        return state.deleteIn(['sections', 'Resources']);
    },
    deleteSectionToo: (state, { id }) => {
        // Update can be used too, but it is mostly useful when you want to change something.
        // e.g. add/remove an item in a sub-list.
        return state.update('sections', (sectionsState) => {
            return sectionsState.delete('Resources');
        });
    }
};

更多示例,consult the docs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 2013-11-22
    • 2014-05-03
    • 2017-06-03
    相关资源
    最近更新 更多