Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

怎么实现局部状态更新 #523

Open
cornsauce opened this issue Nov 11, 2019 · 5 comments
Open

怎么实现局部状态更新 #523

cornsauce opened this issue Nov 11, 2019 · 5 comments

Comments

@cornsauce
Copy link
Contributor

cornsauce commented Nov 11, 2019

我前面读过fish-redux的源码,我发现每一次更新子组件的状态都会向上通知 并且再调用get函数读取状态

[ChildComponent] --set--> [ParentComponent] --set--> ... -> [Page] --get--> ... --get--> [ChildComponent]

但是现在我要实现这样一个功能

QQ截图20191111212137

在用户点击同意或者拒绝以后先反馈UI状态,然后才调用API去执行对应的操作,但是子组件的初始状态是根据网络请求返回的,所以调用完dispatch以后,还是会从父组件去生成状态,此时此刻由于网络原因不可能做到实时刷新state,所以从父组件获取到的状态还是 “pending”,所以UI上没有任何变化。

QQ截图20191111212537

我的state是这样定义的,见下图

QQ截图20191111212645

其实这个需求用局部的StatefulBuilder就可以实现,但是我想有没有办法用fish-redux实现,如果有那是最好的。

@zjuwjf
Copy link
Contributor

zjuwjf commented Nov 12, 2019

所以你的问题是
1、期望在Response返回前,刷新UI
2、单个组件局部刷新

你是要1还是2?

BTW,你的connector的写法,或产生多次的List, 建议使用SourceFlowAdapter或Reselect。

@cornsauce
Copy link
Contributor Author

是2。

其实为什么不用reselect呢... 现在需求经常变 我属实懒得再改了,一把梭 /doge

@zjuwjf
Copy link
Contributor

zjuwjf commented Nov 12, 2019

fish-redux 本身默认就是局部刷新的。

只有状态发生变化的局部才会刷新。

@luckysmg
Copy link

luckysmg commented Dec 1, 2019

这个局部是不是以component为单位的局部刷新呢?

@YQjiuhao
Copy link

我也不知道怎么做友好的局部刷新,一个视图只有一个状态,不是当前component的调动就需要整个界面刷新,影响很大

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants