gpt4 book ai didi

reactjs - 如何使用 Normalizr 展平 Redux 状态中的多对多关系?

转载 作者:行者123 更新时间:2023-12-03 13:51:37 24 4
gpt4 key购买 nike

场景

我们有一个映射以下关系的数据库:

  • 一个标签有许多广告事件
  • 广告事件有许多标签
  • campaigntags 之间的关系由称为 campaign_tag 的关联实体表示
  • campaign_tag 实体具有 priority 属性

问题

我们如何实现normalizr (或任何类似的库)当我们的关联实体没有唯一的 ID/值时,生成一个扁平化的应用程序状态来说明我们的关联实体?

注释/其他想法

我见过的其他示例仅映射了原始实体,并且似乎更适合一对多或一对一关系。他们通常生成这样的状态树:

{
entities: {
campaigns: {
'1': { id: 1, name: 'Ace', tags: [1, 2, 3] },
...
},
tags: {
'1': { id: 1, name: 'Example Tag', campaigns: [1, 2, 3] },
...
}
},
...
}

我们的关联实体会进入该实体组吗?我们应该只添加唯一 ID 吗?这似乎适得其反。扁平化这种关系是否合适?

感谢任何帮助,谢谢。

最佳答案

场景:

  1. 您控制 API:我将发送如下对象:

    campaigns: [{
    id: <id>,
    name: <name>,
    }],
    tags: [{ id: <id>, name: <name> }],
    campaign_tags: [{campaign_id, tag_id, priority}]

    因此这将易于管理并避免信息重复。当您使用 redux connect 挂载组件时,您可以创建一个选择器来填充您的事件标签以添加到组件的属性中。

  2. 您无法控制 API。在这种情况下,我需要知道您从服务器获得什么类型的响应才能推荐某些内容。

关于reactjs - 如何使用 Normalizr 展平 Redux 状态中的多对多关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38493030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com