所在的位置: 前端 >> 前端市场 >> reactreduxuseSelect

reactreduxuseSelect

北京中科白癜风“平安医院” http://m.39.net/news/a_6169082.html

“在使用全局state状态时,我们其实可以用到connect下的mapStateToProps方法,也可以使用hooks钩子useSelector;在公司开发项目时,使用的是hooks钩子函数useSelector,然后出现了性能上的问题,导致页面出现了多次渲染,带着这个疑问去看useSelector源码发现了其中的蹊跷。”

01

这两种写法是否是等价的

首先先来思考一下connect下的mapStateToProps方法以及useSelector方法,这两种写法是否是等价的,代码如下所示:

conststate={return{App:state.App}//这里假设App是一个对象,它的值假设为{a:1,b:2}}//写法一,使用mapStateToProps方法functionTest({App}){}connect(state)(Test)//写法二,使用useSelector方法functionTest(){const{App}=useSelector(state)}

首先给出答案:这两种写法并不等价。我们使用方法二useSelector会导致redux的整个store的任何值变化,都会触发Test的渲染。这时候你是不是会发出很大的疑问,为什么会出现这种情况呢?让我们带着疑问继续往下探索。

02

connect解析

其实connect它默认使用的是shallowEqual浅比较,在我最前面的文章中是仔细的介绍了这个方法的,在这篇文章中我就不讲了,感兴趣的小伙伴可以看看我这篇文章。

PureComponent和Component的区别---涉及源码

daipi,


转载请注明:http://www.aierlanlan.com/rzdk/608.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了