redux的dispatch比起setState延迟高很多?

在redux中使用无状态组件并使用dispatch来修改状态时发现会产生较大延迟(大概有0.5s左右),UI操作顿挫感很强,非常影响使用体验。
而是使用有状态组件内state,通过setState来修改状态则会好的多,没有明显延迟,但是又不好状态检查。
请问dispatch这种延迟为什么会出现,应该如何减轻这种现象?

阅读 9.6k
4 个回答

mapStateToProps到页面的数据量是不是太大了?一般Redux会做多个shallow equal,如果数据量过大,可能会造成这个问题。

或者如果你自定义了equal方法,检查一下你connect的几个equal,里面是不是有deep equal这种很浪费性能的方法。

我从来没有碰到过有明显卡顿的情况,具体还要具体分析。而且其实并不是所有的状态都要redux来管理的,一些state反而是放在组件内部管理更好。

项目管理上,有些地方适合用redux,例如组件比较深,如果用setState就会比较麻烦,一层层的去传递,比较的麻烦,而这个时候redux恰好可以使用的很方便,相反来说,setState就比较好用了,层次只要不超过两层还是可以使用的。这样综合的去考虑你的项目,会节约不好性能

没看到具体代码 只能猜一下

我一般会在每个功能模块最顶层用一个 redux 概念中的 container 用来 bind 该模块需要用到的全局 state,作为一个数据层,通过 props 传给需要用到这些 state 的 component,可以很大程度上减少重复绑定带来的性能问题

题主没有给明确的问题内容,我也很难说出正确的解答。

我是想请问你的数据量是有多少(多大),才能造成明显的差异?

你的数据结构会很复杂吗?reducer中的数据更动是用深拷贝的方式?

而且你的这个测试是已经关闭Redux devtools的测试(production mode),还是还在开发用的模式中?

Redux的文件中有一篇关于性能的,其中有很多相关的指引,或许对你有帮助。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题