Redux-Toolkit:如何使用复合键处理实体?

时间:2020-06-13 18:33:56

标签: redux redux-toolkit

我正在尝试在具有复合键的实体中使用Redux-Toolkit的createEntityAdapter。例如,我的领土实体具有类型(市政,州,生物群落等)和地理编码编号。 {type,geocode}对是该实体的复合键。

我希望能够使用 selectById 和其他选择器。我的第一个想法是创建一个连接类型“;”的 id 字段。和地址解析,但是我敢肯定有更好的方法。

import { createEntityAdapter } from '@reduxjs/toolkit'

const adapter = createEntityAdapter({
    // selectId: (item) => ???,
})

const APIresponse = {
    data: [
        { type: 'state', geocode: 1, value: 123},
        { type: 'state', geocode: 2, value: 66},
        { type: 'municipality', geocode: 1, value: 77},
        { type: 'municipality', geocode: 2, value: 88},
        { type: 'municipality', geocode: 3, value: 99}
    ]
}

1 个答案:

答案 0 :(得分:1)

我是Redux的维护者,也是为RTK实施createEntityAdapter的人。

createEntityAdapter确实假设您的数据中具有某种唯一的ID字段。如果您没有从原始数据中获得唯一的ID字段,那么您会想到以下三种选择:

  • 在处理API响应时(但在分派任何“已加载”操作之前)为每个项目生成唯一的ID。
  • 在处理API响应时,将某些字段组合在一起以创建一个合成的id字段
  • 实施selectId,以便每次都返回字段的组合