【问题标题】:Showing flash messages with Redux on Android在 Android 上使用 Redux 显示 Flash 消息
【发布时间】:2017-05-03 18:26:39
【问题描述】:

我正在尝试使用 Redux 架构制作一个演示 Android 项目,但我无法集中精力显示 Flash 消息,例如作为对成功/失败异步操作的反应。

如果它是一个长期存在的视图,它会通知用户结果,我将发送另一个动作,用特定的标志改变状态并显示视图。但是,如果我想为它使用 Toast 或 SnackBar,我没有办法取消标志,它只会在另一个状态更改后再次显示消息。

我是 Redux 的新手,但我读到 reducer必须 是纯函数,如果我正确理解纯函数的概念,显示 flash 消息是一个侧面-不允许的效果。所以我不能调度一个会被简化为只调用而不改变状态的动作。

所以我能看到的唯一选择是我处理 Redux 流程之外的所有异步操作,调度操作以响应这些事件,并在事件处理程序中显示闪存消息。但在我看来,每一次 UI 变化也是一个状态变化,而不是在 Store 中反映它是问题。因此,这样做我感觉违反了 Redux 模式,并从架构本身中获取了很多,因为它会降低其测试能力。

有出路吗?

【问题讨论】:

    标签: java android architecture redux


    【解决方案1】:

    Redux 描述了一个像中间件这样的组件。 http://redux.js.org/docs/advanced/Middleware.html

    引用文章: '它在调度一个动作和它到达减速器之间提供了一个第三方扩展点。'

    您可以为这种副作用创建中间件。在您的系统中,您有诸如 SetSuccessLoadingAction 和 SetFailedLoadingAction 之类的操作。在您的中间件中,您可以确定这些操作并执行您需要的操作。

    例如,您可以看到中间件如何处理另一个副作用 - 记录每个传入的操作。 https://github.com/zyvpeople/Redux

    【讨论】:

      猜你喜欢
      • 2017-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-22
      • 2019-11-05
      • 1970-01-01
      相关资源
      最近更新 更多