【问题标题】:What is the best practice for refreshing front-end UI when making changes the the database through the UI? [closed]通过 UI 更改数据库时刷新前端 UI 的最佳实践是什么? [关闭]
【发布时间】:2025-12-07 20:10:02
【问题描述】:

我希望了解同时更新 UI 和数据库值时的最佳做法。

设置

我在前端有一个表格,它是带有列的项目列表:

  • 身份证
  • 姓名
  • 创建日期
  • 收藏按钮(星号)

这个列表是在页面加载时通过 axios(类似于 Ajax)从数据库中拉出来的。收藏按钮是用于更改类并更新数据库的用户的切换按钮。我正在尝试了解更新 UI 和数据库的最佳做法。

目前,逻辑是这样的:

  1. 页面上加载了初始列表
  2. 用户点击某一行上的收藏按钮
  3. UI javascript 将更新发送到数据库,以更改列表中单个项目的“收藏”值
  4. 成功更改后,后端会返回 200 成功代码
  5. 前端收到变更成功,然后使用axios查询全库列表,用更新后的数据刷新UI列表

这是刷新 UI 的正确方法吗? 我看到的问题是,如果我在等待更新然后再次查询数据库时用户界面响应时间很差进行更改。

其他选项

我考虑过的另一个选项是更新 UI 列表,同时将更新请求发送到后端。唯一的区别是我不会“重新查询”数据库来更新数据,因为它应该匹配。

【问题讨论】:

  • 有很多变量需要考虑。我所能推荐的就是避免在成功更改后更新整个列表(4)。而是使用 200 成功代码发送更新项目的 ID。然后在javascript中只更新那个元素
  • 以 gmail 为例,您应该采用“其他选项”的想法。用户可以继续更新记录而无需等待页面刷新并且服务器不断更新。问题是如果有多个用户同时进行更改...那么您可能需要刷新整个页面。

标签: javascript ajax user-interface vue.js axios


【解决方案1】:

我认为这取决于更个人的方法。我个人认为,如果我们确实知道做出了什么样的改变,那么根本没有必要提出任何疑问。或者我们可以只查询那个特定的对象,而不是整个列表。或者,如果编辑成功,我们的 API 可以配置为从数据库返回新的、更新的对象(这是我最喜欢的)。

但有人可能会争辩说刷新整个列表是个坏主意。这是

  • 对数据库的更繁重的查询
  • 在后端转换为 JSON 的更多项目
  • 通过网络发送更多数据
  • 在前端解析更多 JSON

如您所见,这很麻烦,如果您有很多用户,他们可能会开始用查询轰炸数据库,尽管每个人都知道(推测性地,但大部分是正确的)此时数据的样子。因此,如果 API 无法配置为返回更新的对象,我建议要么只查询更新的对象,要么根本不查询——如果我们知道我们请求后端在数据库中进行哪些更改,并且我们知道后端成功地做到了,然后我们只是在前端应用更改而不需要进一步考虑

【讨论】: