在redux中使用无状态组件并使用dispatch来修改状态时发现会产生较大延迟(大概有0.5s左右),UI操作顿挫感很强,非常影响使用体验。
而是使用有状态组件内state,通过setState来修改状态则会好的多,没有明显延迟,但是又不好状态检查。
请问dispatch这种延迟为什么会出现,应该如何减轻这种现象?
在redux中使用无状态组件并使用dispatch来修改状态时发现会产生较大延迟(大概有0.5s左右),UI操作顿挫感很强,非常影响使用体验。
而是使用有状态组件内state,通过setState来修改状态则会好的多,没有明显延迟,但是又不好状态检查。
请问dispatch这种延迟为什么会出现,应该如何减轻这种现象?
项目管理上,有些地方适合用redux,例如组件比较深,如果用setState就会比较麻烦,一层层的去传递,比较的麻烦,而这个时候redux恰好可以使用的很方便,相反来说,setState就比较好用了,层次只要不超过两层还是可以使用的。这样综合的去考虑你的项目,会节约不好性能
没看到具体代码 只能猜一下
我一般会在每个功能模块最顶层用一个 redux 概念中的 container 用来 bind 该模块需要用到的全局 state,作为一个数据层,通过 props 传给需要用到这些 state 的 component,可以很大程度上减少重复绑定带来的性能问题
题主没有给明确的问题内容,我也很难说出正确的解答。
我是想请问你的数据量是有多少(多大),才能造成明显的差异?
你的数据结构会很复杂吗?reducer中的数据更动是用深拷贝的方式?
而且你的这个测试是已经关闭Redux devtools的测试(production mode),还是还在开发用的模式中?
Redux的文件中有一篇关于性能的,其中有很多相关的指引,或许对你有帮助。
4 回答1.8k 阅读
2 回答1.2k 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
4 回答1.6k 阅读
1 回答788 阅读✓ 已解决
2 回答977 阅读✓ 已解决
2 回答1.1k 阅读
你
mapStateToProps
到页面的数据量是不是太大了?一般Redux
会做多个shallow equal
,如果数据量过大,可能会造成这个问题。或者如果你自定义了
equal
方法,检查一下你connect
的几个equal
,里面是不是有deep equal
这种很浪费性能的方法。我从来没有碰到过有明显卡顿的情况,具体还要具体分析。而且其实并不是所有的状态都要redux来管理的,一些
state
反而是放在组件内部管理更好。