Redux-Toolkit:如何处理具有复合键的实体?

Redux-Toolkit: how to deal with an entity with compound keys?

我正在尝试在具有复合键的实体中使用 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}
    ]
}

我是 Redux 维护者,也是 createEntityAdapter RTK 的实现者。

createEntityAdapter 确实假设您的数据中有某种唯一 ID 字段。如果您没有原始数据的唯一 ID 字段,我可以想到三个选项:

  • 在处理 API 响应时(但在调度任何 "loaded" 操作之前)为每个项目生成唯一 ID
  • 在处理 API 响应
  • 时,将一些字段组合在一起以创建合成的 id 字段
  • 实施selectId,以便每次returns字段组合