微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

乐观的用户界面反应,swr,沉浸

如何解决乐观的用户界面反应,swr,沉浸

我希望对乐观的ui模式的“我的”实现进行简短的代码回顾。我正在使用SWR,沉浸器和自定义获取挂钩来完成大部分繁重的工作。但是,我不确定这是否确实是这样做的方法。特别是在为临时生成的项目分配临时ID时。我不应该在某个地方清除它吗?可能会引起问题吗?

const spawn = async flavour => {
    const payload = {
      planId: flavour.id,name: 'test',description: '',}
    mutate(
      '/account/instances',produce(draft => {
        draft.push({
          ...payload,id: uuid(),plan: {name: flavour.name},state: {status: 'PENDING'},image: {name: flavour.image.name},})
      }),false
    )
    mutate(
      '/account/instances',await doFetch('/account/instances','post',payload)
    )
  }

谢谢!

解决方法

你的代码对我来说似乎是正确的。它将乐观地更新 UI,从后端获取数据,如果数据不同,则使用该数据再次更新 UI。

关于生成的 id,这真的取决于你用它做什么。如果您没有做任何重要的事情,那可能没问题,因为当后端回复时,该 ID 将被真实的 ID 覆盖。但是如果你向用户展示它可能会导致问题(用户会看到它正在更新),或者如果你提供基于它的操作则更糟。

我还想提请您注意,由于网络原因或与后端问题相关的原因,回复可能会失败。在这种情况下,如果您只收到错误或从未收到任何回复,您的 UI 将保持不正确状态,直到 swr 下一次成功获取。 为了避免此类问题,您可能会对use-mutation感兴趣。这是一个小库,旨在与 swr 一起使用,以在出现错误时回滚乐观更新的数据。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?