【问题标题】:Callback in Redux/Redux-Saga is an Anti-pattern?Redux/Redux-Saga 中的回调是反模式?
【发布时间】:2021-11-14 23:05:11
【问题描述】:

让我们弄清楚, 用户执行登录提交,因此应用程序改为显示 提交按钮一个 Spinner,一个自包含状态,它可以帮助我们 (isLoading)。

好的,当应用程序发送到 saga 登录操作时,我们可以传递一个回调 用于在登录提交成功或失败时设置假加载状态。

有些专家会说,在 reducer 中管理加载状态,但会用到整个应用程序中 加载状态,对于某些特定的操作听起来不太好。

【问题讨论】:

    标签: reactjs redux react-redux redux-saga


    【解决方案1】:

    回调的问题在于架构不能保证回调被调用或者它不会被多次调用。这是因为 redux 操作是必不可少的事件 - 每个事件都可以由 0-n 个处理程序(或我们的例子中的 sagas)处理。

    当然,在撰写本文时,您知道该特定代码只处理一次,但对其他人来说,这可能很难掌握,除非项目中有严格的规则来处理这个问题。

    同时,您是对的,将本地状态放入 redux 存储并不是很好。我通常通过将数据逻辑移动到自己的结构来处理这个问题。所以例如从服务器加载项目集合不再是某些组件的本地状态,而是可以由应用程序的多个部分使用和重用的全局数据状态。这也将更容易为数据跨整个应用程序等自定义缓存逻辑。但是,对于某些特定的后端调用,redux 中的某些本地组件状态仍然是不可避免的。

    就未来而言,我看到了useSaga hook 的一些尝试,它可以在本地 useReducer hook 和本地状态之上工作,但是这种逻辑的实现仍然受到限制,因为当前的 react hook api 缺乏certain functionality 这是确保这在反应提交阶段、渲染救助、reducer 重新运行等方面正常工作所必需的。

    【讨论】:

    • 您好 Martin,您的回答很明确,让我对状态管理进行了更好的思考。非常感谢!
    猜你喜欢
    • 2022-01-15
    • 1970-01-01
    • 2020-06-18
    • 2020-11-17
    • 2020-04-08
    • 2018-11-30
    • 1970-01-01
    • 2017-04-25
    • 2017-05-28
    相关资源
    最近更新 更多