fish-redux icon indicating copy to clipboard operation
fish-redux copied to clipboard

怎么实现局部状态更新

Open cornsauce opened this issue 6 years ago • 5 comments
trafficstars

我前面读过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实现,如果有那是最好的。

cornsauce avatar Nov 11 '19 13:11 cornsauce

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

你是要1还是2?

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

zjuwjf avatar Nov 12 '19 02:11 zjuwjf

是2。

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

cornsauce avatar Nov 12 '19 03:11 cornsauce

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

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

zjuwjf avatar Nov 12 '19 03:11 zjuwjf

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

luckysmg avatar Dec 01 '19 06:12 luckysmg

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

YQjiuhao avatar Dec 17 '19 01:12 YQjiuhao