我的 Web 应用程序使用 React、Redux 和 UIKit。它由屏幕 A 和 B 组成。
屏幕 A 包含一个按钮 - 按下后 - 将发送异步网络请求以将一些数据发布到服务器。
如果用户在服务器返回响应之前一直停留在屏幕 A 上,他们将收到有关请求是否成功的确认信息。
我使用 React 和 Redux 实现这一点的方式是拥有一个负责显示确认横幅的组件。postStatus
这个组件监听我的 Redux 存储中调用的状态的变化。当用户单击按钮时,可能会分派 3 个带有 statusesPENDING
和的SUCCESS
Redux操作。ERROR
在它们被调度之后 - 它们被相应地改变postStatus
状态的减速器捕获。然后,此状态会映射到我的组件属性,并重新渲染以显示相关横幅。
但是,如果用户在从服务器返回响应并导航到屏幕 B 之前没有留在屏幕 A 上 - 我希望显示通知,以便用户仍然知道请求的状态。
我的问题是,实现这种行为的最明智的方法是什么?
以下是我能想到的几件事:
- 创建一个实际上不渲染任何东西的反应组件——它只是监听
postState
和一些额外的状态,代表用户在哪个屏幕上。实现componentWillReceiveProps
react 生命周期方法,如果postState
isSUCCESS
orERROR
并且其他状态表示用户不在屏幕 A 上 - 然后调用UIKit.notify()
以显示通知。 - 如果用户不在屏幕 A 上,则
UIKit.notify()
在调度SUCCESS
or操作时调用。ERROR
- 如果用户不在屏幕 A 上,则在调度或操作
UIKit.notify()
后减少状态时调用。SUCCESS
ERROR
很可能还有很多其他解决方案,所以我很想听听一些。