【问题标题】:When should I update the cloud database, whenever user interacts with frontend? [closed]每当用户与前端交互时,我应该何时更新云数据库? [关闭]
【发布时间】:2021-01-20 04:04:22
【问题描述】:

我想知道更新前端(ReactApolloClient)以及后端服务器(ApolloServer)的最佳方式是什么,以在用户与前端交互并更新某些内容时保持它们之间的数据同步。我想到了两种方法:

  1. 只更新组件的状态以获得前端的即时更新并通过在生命周期方法componentWillUnmount中调用fetch来更新云数据库。但是,当我使用ApolloClient 时,我可以使用useMutation 挂钩来更新后端。但是我如何在componentWillUnmount 中使用它。

  2. 这是传统的,我们同时更新前端和后端。但我认为这可能会影响用户交互,因为后端操作可能需要很长时间才能响应。

你怎么想的?有什么建议吗?

【问题讨论】:

  • 您不应该相信 componentWillUnmount 生命周期来保存您的数据。想象一个场景,当用户在你的前端更改了一些数据,然后关闭了整个浏览器。在这种情况下,组件不会卸载。你可以有一个保存按钮,让用户手动保存数据。

标签: reactjs server react-apollo apollo-client apollo-server


【解决方案1】:

正如@szchocik 在 cmets 中已经指出的那样,依赖componentWillUnmount 并不是一个好主意,因为不一定会调用该方法。每当用户希望保存数据时(例如,完成表单并点击“保存”按钮或更新输入然后失去焦点时),您都应该向后端发出请求。

如果您希望在执行突变时为您的用户提供更即时的体验,您可以利用乐观更新as described in the docs。为 useMutation 挂钩提供 optimisticResponse 参数将允许您立即更新客户端缓存(以及您的 UI),而无需等待服务器的响应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-28
    • 1970-01-01
    • 2019-09-24
    • 2011-09-04
    • 1970-01-01
    • 2019-04-20
    • 2015-04-10
    • 1970-01-01
    相关资源
    最近更新 更多