Redux处理新项目和id
Redux handling new items and ids
我有一个带有列表和id映射的标准化存储:
{
"byId": {
"images": {
"10984": {"id": "10984", "src": "/img.png"}
}
},
"myImages": [
"10948"
]
}
现在我想创建一个新的图像,并将其添加到列表中。问题是,在将它发送到服务器之前,我没有它的id。所以我可以生成一个随机id
"tempid19048": {"id": "tempid19048", src: "/img.png"}
"myImages": [
"10948",
"tempid19048"
]
然后我把它保存到服务器上,并得到一个id,我调度了一个操作。我可能在状态的多个部分使用了tempid19048
。
用新id更新所有内容的明智方法是什么?我是不是完全错了?
因为Redux实际上是一个客户端状态管理器,通常你只想镜像全局状态,就这样。正如你所知,与Flux/GraphQL不同,没有任何缓存、乐观更新等功能
也就是说,我发现redux乐观,模仿Flux对redux的乐观更新。我没有用过,但它看起来很好看。
但是,即使有所说的,我仍然会强调设计出任何临时id/乐观更新等需求的简单解决方案:
- 请求在服务器上创建映像
- 显示微调器
- 收到来自服务器的成功消息后,将具有新
id
的新映像添加到全局状态
您可以将"myImage"
中的ID作为键值对。
"myImages": {
"10948": "10948",
"tempid19048": "tempid19048"
}
现在,无论你想在哪里使用,都可以用作
myImages["tempid19048"]
这将为您提供其当前值"tempid19048"
。若你们需要改变这个tempId,你们只需要改变值,键保持不变。
"myImages": {
"10948": "10948",
"tempid19048": "newServerID"
}
因此,无论您现在使用tempID
的位置有多少,您都只需要在一个位置进行更新。
相关文章:
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- Redux处理新项目和id
- JQuery Masonry.Ajax图标和“;加载新项目”;绳子放错地方了
- Ng-Repeat在末尾添加新项目
- AngularJs/GitHub :如何在没有任何历史记录的情况下将角度种子克隆到我的新项目中
- 每天从数组中挑选新项目
- 将jquery插件应用于angularJS ng repeat中的新项目
- 使用新项目更新KendoUI网格数据源
- AngularJS ForEach将新项目推送到对象中
- 在 SharePoint 2010 上创建“添加新项目”按钮
- id:在续集中创建新项目时为空
- 如何选择不包含类/id 的项目 - jquery.
- 新项目的所有列表项弹出窗口在悬停时立即显示 - Javascript
- AngularJS:插入新项目后对列表重新排序
- 扩展菜单插入带有覆盖的新项目
- 如何将新项目添加到 srt 文件中
- 如何在 JQGRID 新项目弹出窗口中应用 OnKeyUp 方法
- Jquery - 按 ID 选择项目不起作用
- 在SlickGrid的dataView的第一行添加一个新项目,就像JavaScript的unshift一样
- 当一个新项目被添加到FireBug控制台时,是否有一个jQuery事件等同于