如何使 React 状态与 MySQL 数据库保持同步
How to keep the React state in sync with MySQL database
Scene:我正在构建一个简单的日历 Web 应用程序,它在前端使用 React,在服务器后端使用 MySQL。该应用程序在首次安装时从服务器检索所有事件的列表,将它们显示给用户并允许进行 CRUD 操作。一切都按预期工作。
问题:在创建、更新或删除操作中,我应该:
更新数据库和状态"independently"。
更新数据库,再次调用服务器以检索新的事件列表,然后将状态设置为等于此新列表。
完全做点别的事情。
推动力:我的工作印象是我的数据应该有一个 "single source of truth",感觉上面的第一个选项造成了我的情况有两个 "sources" 在某些情况下可能会不同步。
1. 和 2. 都是正确的,这实际上取决于您要实现的目标。您可以尝试使用 optimistic updates 这意味着当提交这些操作时,您将状态更改为成功(大多数情况下应该是这种情况),如果由于某种原因,database/backend 中的操作失败。这创造了一个很好的 front-end 体验。在这些情况下,您也可以在操作后获取新数据。
如果数据库中的数据可以从多个来源更改,您需要定期获取它,并且很可能在更改后获取它,并相应地更新您的 front-end。
案例 1. 如果您是唯一一个操作数据的人(您至少需要在该州拥有),那么情况 1 应该可行。在这种情况下,back-end / 数据库仍应响应已执行操作的状态,以帮助您管理状态。您还可以在操作挂起时显示某种加载指示器,而不是乐观地更新状态。
您可以在此处阅读有关乐观更新的更多信息:https://medium.com/guidesmiths-dev/anatomy-of-a-react-application-optimistic-updates-e4a3318665c7
Scene:我正在构建一个简单的日历 Web 应用程序,它在前端使用 React,在服务器后端使用 MySQL。该应用程序在首次安装时从服务器检索所有事件的列表,将它们显示给用户并允许进行 CRUD 操作。一切都按预期工作。
问题:在创建、更新或删除操作中,我应该:
更新数据库和状态"independently"。
更新数据库,再次调用服务器以检索新的事件列表,然后将状态设置为等于此新列表。
完全做点别的事情。
推动力:我的工作印象是我的数据应该有一个 "single source of truth",感觉上面的第一个选项造成了我的情况有两个 "sources" 在某些情况下可能会不同步。
1. 和 2. 都是正确的,这实际上取决于您要实现的目标。您可以尝试使用 optimistic updates 这意味着当提交这些操作时,您将状态更改为成功(大多数情况下应该是这种情况),如果由于某种原因,database/backend 中的操作失败。这创造了一个很好的 front-end 体验。在这些情况下,您也可以在操作后获取新数据。
如果数据库中的数据可以从多个来源更改,您需要定期获取它,并且很可能在更改后获取它,并相应地更新您的 front-end。
案例 1. 如果您是唯一一个操作数据的人(您至少需要在该州拥有),那么情况 1 应该可行。在这种情况下,back-end / 数据库仍应响应已执行操作的状态,以帮助您管理状态。您还可以在操作挂起时显示某种加载指示器,而不是乐观地更新状态。
您可以在此处阅读有关乐观更新的更多信息:https://medium.com/guidesmiths-dev/anatomy-of-a-react-application-optimistic-updates-e4a3318665c7