alibaba / fish-redux

An assembled flutter application framework.
https://github.com/alibaba/fish-redux
Apache License 2.0
7.33k stars 843 forks source link

如何进行全局刷新 #438

Open Bedroome opened 5 years ago

Bedroome commented 5 years ago

请问如果有这样的两个个场景 1.我有一个页面分别是用3个tab构成的3个页面, 假如这3个页面都需要登陆才能够使用, 是否需要登陆由后台返回的数据决定。 我分别点开了这3个页面, 然后不登陆返回, 显示的是请登录的缺省页, 这3个页面都使用了keepAlive,然后我在其中一个页面登陆后,其他2个页面如何能做到当我点击那个页面的时候重新获取数据并加载页面

2.还有就是比如我在这个页面操作完成之后, 其他的某些页面需要重新获取数据, 我如何能做到当用户回到那个页面(页面未被销毁)的时候再执行获取数据

zjuwjf commented 5 years ago

可能你描述的特别细节,我难以理解你的具体业务。 你提到的全局刷新,抽象来看是一个什么特性?是目前fish-redux所没有的么?

Bedroome commented 5 years ago

大概是我这个界面处于KeepAlive的状态.我在别的页面进行操作, 然后我发送一个广播.KeepAlive的页面会接收到然后进行刷新, 可是我并不想直接收到广播就刷新, 我想当回到那个KeepAlive页面的时候再进行刷新. 有没有什么方案

zjuwjf commented 5 years ago

嗯,理解了。但是这个可能不是fish-redux解决的问题。

你说的刷新是业务逻辑的刷新,还是Widget的刷新?

Bedroome commented 5 years ago

应该也算是一种管理状态吧。我需要发送一条消息给KeepAlive页面, 是否能够延迟执行这个广播所要处理的事件。延迟到我重新回到那个页面的时候再执行

wangtianming commented 5 years ago

@Bedroome shouldUpdate + 生命周期?

zjuwjf commented 5 years ago

应该也算是一种管理状态吧。我需要发送一条消息给KeepAlive页面, 是否能够延迟执行这个广播所要处理的事件。延迟到我重新回到那个页面的时候再执行

延迟似乎是一个业务属性的逻辑,我觉得应该由业务代码完成。

VintLin commented 4 years ago
  1. 您的第一个需求似乎能通过将用户登录状态放在全局Store中,并在登录后通过Reducer刷新全局Store来解决。
  2. 您的第二个需求,我的想法是使用FishRedux的EffectMiddleware监听Page的Lifecycle.dispose,并通过EventBus传递事件,在返回页面中监听该事件即可触发获取数据的操作。