我正在一个项目中使用reactjs 和flux 架构。我对如何将嵌套数据正确分解为存储以及为什么我应该将数据拆分为多个存储感到有点困惑。
为了解释这个问题,我将使用这个例子:
想象一个有项目的 Todo 应用程序。每个项目都有任务,每个任务都可以有注释。
该应用程序使用 REST api 检索数据,返回以下响应:
{
projects: [
{
id: 1,
name: "Action Required",
tasks: [
{
id: 1,
name: "Go grocery shopping",
notes: [
{
id: 1,
name: "Check shop 1"
},
{
id: 2,
name: "Also check shop 2"
}
]
}
]
},
]
}
虚构应用程序的界面在左侧显示项目列表,当您选择一个项目时,该项目将变为活动状态,并且其任务将显示在右侧。当您单击任务时,您可以在弹出窗口中看到其注释。
我要做的是使用 1 个商店,即“项目商店”。操作向服务器发出请求,获取数据并指示存储用新数据填充自身。商店在内部保存该实体树(项目 -> 任务 -> 注释)。
为了能够根据选择的项目显示和隐藏任务,我还在商店中保留一个变量“activeProjectId”。基于此,视图可以获取活动项目、其任务并渲染它们。
问题解决了。
但是:在网上搜索了一下这是否是一个好的解决方案后,我看到很多人说您应该为每个实体使用单独的商店。
这意味着:
ProjectStore、TaskStore 和 NoteStore。为了能够管理关联,我可能还需要“TasksByProjectStore”和“NotesByTaskStore”。
有人可以解释一下为什么这样会更好吗?我唯一看到的是管理存储和数据流的大量开销。