react-redux的源码分析
react-redux的源码分析
这里简单带着大家看一下react-redux的源码:
- 但是第一因为这个教程不是讲源码为主的教程(穿插讲解部分源码),所以源码只会阅读核心的部分;
- 另外我经常会说,整个社区在hooks出现后大量的库转向了hooks,所以在源码中会出现大量的hooks代码;
- 因为某些hooks的作用在这里也不方便解释(可以学习完hooks之后再详细阅读);
首先,我们简单看一下Provider的源码:
- 使用了一个useMemo来返回一个contextValue的对象;
- 这里使用useMemo的原因是为了进行性能的优化;
- 在依赖的store不改变的情况下,不会进行重新计算,返回一个新的对象;
- 在下面的Context的Provider中就会将其赋值给value属性;
ReactReduxContext来自另外一个文件:
connect函数的依赖比较复杂:
调用createConnect来返回一个connect函数:
createConnect函数的调用:
connect函数最终调用的是connectHOC:
- connectHOC其实是connectAdvanced的函数;
- connectAdvanced函数最终返回的是wrapWithConnect函数;
wrapWithConnect函数: