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

Rod*_*ral 2 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}
    ]
}
Run Code Online (Sandbox Code Playgroud)

mar*_*son 6

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

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

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