javascript - Redux 处理新项目和 ID

标签 javascript reactjs redux

我有带有列表和 ID 映射的规范化商店:

{
  "byId": {
    "images": {
      "10984": {"id": "10984", "src": "/img.png"}
    }
  },
  "myImages": [
    "10948"
  ]
}

现在我想创建一个新图像,并将其添加到列表中。问题是在将它发送到服务器之前我没有它的 ID。所以我可以生成一个随机 id

      "tempid19048": {"id": "tempid19048", src: "/img.png"}
  "myImages": [
    "10948",
    "tempid19048"
  ]

然后我将它保存到服务器并取回一个 id,然后我发送一个 Action 。我可能在该州的多个地方使用了 tempid19048

使用新 ID 更新所有内容的明智方法是什么?我处理这一切都错了吗?

最佳答案

因为 Redux 实际上是一个客户端状态管理器,通常您只想镜像全局状态,仅此而已。如您所知,与 Flux/GraphQL 不同,它没有任何缓存、乐观更新等功能。我的直觉告诉我,在不损害 Redux 所基于的纯粹简单性的情况下构建它会很困难。

就是说,我找到了 redux-optimistic这模仿了 Flux 对 Redux 的乐观更新。我没用过,但看起来不错。

但即使 说了,我仍然会强调简单的解决方案,即设计出任何对临时 ID/乐观更新等的需求:

  1. 请求在服务器上创建图像
  2. 显示一个旋转器
  3. 在来自服务器的成功消息中,将具有新 id 的新图像添加到全局状态

关于javascript - Redux 处理新项目和 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37219037/

相关文章:

javascript - 函数作为 react 子项无效? - 需要帮助将获取的数据提取到表中

javascript - 将 PHP 多维数组转换为 JavaScript 符号

javascript - 使用 Javascript 从表单中获取 HTML 中的隐藏输入(名称中带有句点)

javascript - 数组已排序,但 React 未按排序顺序渲染

reactjs - 无法让 Material UI 单选按钮与 Formik 一起使用

javascript - Redux 开发工具不适用于大型操作负载

javascript - 如何将 dataURL 转换为 javascript 中的文件对象?

javascript - 创建的 Angular 组件在 'ng build' 之后不可见

reactjs - React/Redux connect(mapStateToProps)() 为 this.props 返回未定义

javascript - react native + 终极版 : Why does Switch immediately turns back to false after being switched to true?