使用Redux避免ReactJS中的种族条件



我从社区那里得到了一些关于如何在ReactJS w/Redux中防止种族条件的指导。

假设两个人在看同一张唱片,并且都想对它进行更改,那么动作流应该是什么样子?我不知道如何在谷歌上搜索这个查询,所以我决定请社区为我指明正确的方向。

最初我想,如果我做一个setState并将其持久化到DB中,它会在其他用户眼中自动刷新(尽管我无法确认(,否则我将如何锁定项目以进行更改,从而使其他用户无法操作该值?

您可以将websocket与react redux一起使用。若user A正在查看记录,则向服务器发送消息以锁定该记录。然后通过websocket向当前正在查看的其他订阅用户广播locked消息。一旦用户收到lockedwebsocket消息,更新react/redux状态以显示适当的状态。

至于竞争条件,它可能会发生,需要在服务器上根据用例进行处理。例如,如果user A的请求到达第一个,User B的请求到达第二个,并且如果您想优先选择第一个用户,请锁定资源记录,但仅为User A设置访问true。一旦user A停止编辑,请解除锁定。

如果你想让websocket消息监视部分成为react组件之外的一个单独的关注点,你可以研究redux中间件redux传奇。

最新更新