Javascript 在React/Redux中创建新项目并稍后保存到服务器

Javascript 在React/Redux中创建新项目并稍后保存到服务器,javascript,reactjs,redux,normalizr,Javascript,Reactjs,Redux,Normalizr,我正在使用React/Redux构建一个web应用程序,我遇到了一个问题,我想找到一个简单的解决方案:创建一个新的(嵌套的)记录,然后保存到服务器上 我正在使用normalizer创建一个平面状态树。基本上,我的(相关)状态结构如下所示: projects: { as1234hhafs: { _id: as1234hhafs pages: [kljafsldasdf, asdfas8990], ... } }, pages: { kljafsldasdf: {

我正在使用React/Redux构建一个web应用程序,我遇到了一个问题,我想找到一个简单的解决方案:创建一个新的(嵌套的)记录,然后保存到服务器上

我正在使用normalizer创建一个平面状态树。基本上,我的(相关)状态结构如下所示:

projects: {
  as1234hhafs: {
    _id: as1234hhafs
    pages: [kljafsldasdf, asdfas8990],
    ...
  }
},
pages: {
  kljafsldasdf: {
    _id: kljafsldasdf,
    name: 'New page',
    ...
  },
  asdfas8990: {
    _id: asdfas8990,
    name: 'New page 2',
    ...
  }
}
每个项目都有一系列子文档。我想做的是创建一个新页面(子文档)并编辑它的数据(和子文档),然后单击将其保存到服务器。但我不知道如何使用推荐的redux/normalizer状态结构实现这一点

如果商店还没有ID,我如何向其添加新记录?一旦服务器的响应向记录分配了名称和ID,我将如何管理它


我希望我的问题足够清楚。

两种可能的方法:

  • 将未保存的条目存储在状态的一个单独部分中,例如,在不需要id的数组中。保存后,将它们移动到持久对象集中,并且您知道id。合并两组对象以在UI上显示它们应该不会太复杂

  • 在前端生成ID根据您想要进行的权衡,这可能是一个递增的数字、随机数或完全不同的数字。保存记录后,您可以用永久id替换此临时id


  • 请注意,这不是一个详尽的列表,还有许多其他可能的方法。只是一些让你开始的东西。

    两种可能的方法:

  • 将未保存的条目存储在状态的一个单独部分中,例如,在不需要id的数组中。保存后,将它们移动到持久对象集中,并且您知道id。合并两组对象以在UI上显示它们应该不会太复杂

  • 在前端生成ID根据您想要进行的权衡,这可能是一个递增的数字、随机数或完全不同的数字。保存记录后,您可以用永久id替换此临时id

  • 请注意,这不是一个详尽的列表,还有许多其他可能的方法。您可以生成本地(前端)ID并将后端ID存储为每个页面的属性。在需要使用后端ID时使用它

    或者,您可以将未保存的页面存储在状态树的另一个位置,但是这会使页面组件的信息源更加复杂。

    您可以生成本地(前端)ID,并将后端ID存储为每个页面的属性。在需要使用后端ID时使用它


    或者,您可以将未保存的页面存储在状态树的另一个位置,但是这会使页面组件的信息源更加复杂。

    非常感谢!关于方法2:在得到响应后,如何将前端生成的ID映射到服务器分配的ID?一种常见的方法是将临时ID传递到后端并返回到前端,以将前端的草稿与后端的永久记录相匹配。非常感谢!关于方法2:在收到响应后,如何将前端生成的ID映射到服务器分配的ID?一种常见的方法是将临时ID传递到后端并返回到前端,以将前端的草稿与后端的永久记录相匹配。