我 Build 使用反应,和/ Redux的web应用程序,我有一个问题想出的东西,应该是简单的解决方案:创建一个新的(嵌套的)记录,并保存到服务器后 .
我正在使用normalizr来创建一个平面状态树 . 基本上我的(相关)状态结构如下所示:
projects: {
as1234hhafs: {
_id: as1234hhafs
pages: [kljafsldasdf, asdfas8990],
...
}
},
pages: {
kljafsldasdf: {
_id: kljafsldasdf,
name: 'New page',
...
},
asdfas8990: {
_id: asdfas8990,
name: 'New page 2',
...
}
}
每个项目都有一个子文档数组 . 我想要做的是创建一个新页面(子文档)并编辑它的数据(和子文档),并在点击时将其保存到服务器 . 但我对如何使用推荐的redux / normalizr状态结构实现这一点感到茫然 .
如果尚未拥有ID,如何将新记录添加到商店?一旦服务器的响应为记录分配和ID,我将如何管理它?
我希望我的问题很清楚 .
2 回答
您可以生成本地(前端)ID并将后端ID存储为每个页面的属性 . 需要时,请使用后端ID .
或者,您可以将未保存的页面存储在状态树中的其他位置,但这会使页面组件的信息源更加复杂 .
两种可能的方法:
Store unsaved entries in a separate part of the state ,例如在一个不需要id的数组中 . 保存后,将它们移动到持久对象集,并且您知道id . 合并两组对象以便在UI上显示它们不应该太复杂 .
Generate ids on the frontend 根据你想要的权衡取舍,这可能是一个递增的数字,一个随机的UUID,或者完全不同的东西 . 然后,您可以在保存记录后将此临时ID替换为永久ID .
请注意,这不是一个详尽的列表,还有许多其他可能的方法 . 只是让你入门的东西 .