0

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

1 回答 1

3

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

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

  • 在处理 API 响应时为每个项目生成一个唯一 ID(但在分派任何“加载”操作之前)
  • id在处理 API 响应时,将一些字段组合连接在一起以创建合成字段
  • 实现selectId,使其每次返回字段组合
于 2020-06-15T03:24:28.157 回答