【问题标题】:Avoiding Race Condition in ReactJS with Redux使用 Redux 避免 ReactJS 中的竞争条件
【发布时间】:2020-08-22 21:26:46
【问题描述】:

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

假设两个人正在查看同一个记录,并且都想对其进行更改,那么操作流程应该是什么样的?我不知道如何用谷歌搜索这个查询,所以我决定让社区为我指明正确的方向。

最初我认为如果我执行 setState 并将其持久化到 DB 中,它会在其他用户的眼中自动刷新(尽管我无法确认),否则我将如何锁定项目以进行更改以便其他用户无法操纵价值?

【问题讨论】:

标签: reactjs redux react-redux race-condition redux-thunk


【解决方案1】:

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

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

如果您想让 websocket 消息监视部分成为 react 组件之外的单独关注点,您可以查看 redux 中间件redux-saga

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-30
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 2019-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多