在带有Redux的ReactJS中避免竞争条件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在带有Redux的ReactJS中避免竞争条件相关的知识,希望对你有一定的参考价值。

我从社区中获得了一些关于如何在带有Redux的ReactJS中防止竞争条件的指导。

[假设两个人正在查看相同的记录,并且两个人都希望对其进行更改,那么应该采取什么样的行动流程?我不确定如何使用Google查询此查询,因此我决定要求社区为我指出正确的方向。

最初,我以为如果执行setState并将其保存到数据库中,它将在其他用户的眼中自动刷新(尽管我无法确认),否则我将如何锁定该项目以进行更改,以使其他用户无法操纵价值?

答案

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

关于竞争条件,可能会发生这种情况,需要根据用例在服务器上进行处理。例如,如果user A的请求到达第一个,User B的请求到达第二个,并且如果您希望优先选择第一个用户,则锁定资源记录,但仅将访问权限设置为trueUser A停止编辑后,请解除锁定。

如果您想使websocket消息监视部分成为react组件之外的一个单独的问题,您可以查看redux中间件user A

以上是关于在带有Redux的ReactJS中避免竞争条件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Redux 的 useEffect 竞争条件

带有 Redux 的 ReactJS 在 SVG 组件上显示引导工具提示

使用带有 reactjs 和 redux 的 Material-ui 复选框

ReactJS 并发 SetState 竞争条件

如何使用 reactjs 和 redux 处理导航

我是否必须锁定Blueprint实例以避免Flask中的竞争条件?