React 数据管理 - Reac-Redux

react-redux - 7.2.3

1.Provider 中主要功能创建 contextValue, Context.Provider 提供了数据 contextValue
在这里插入图片描述
2. connect 接收三个参数 mapStateToProps,mapDispatchToProps,mergeProps,主要功能为处理传入的参数,并返回一个函数
在这里插入图片描述
在这里插入图片描述
match函数从后往前遍历传入的 factories 参数,有返回值则推出循环并返回返回值
在这里插入图片描述
initMapStateToProps:没有传入mapStateToProps(函数)时,添加默认的值和函数
defaultMapStateToPropsFactories为一个包含函数的数组
在这里插入图片描述
在这里插入图片描述
initMapDispatchToProps:没有传入mapDispatchToProps(函数或对象)时,添加默认的函数
defaultMapDispatchToPropsFactories为一个包含函数的数组
在这里插入图片描述
initMergeProps:将传入的 mergeProps,和 前两个参数得到的最终的返回值合并在一起作为组件的 props
在这里插入图片描述
connect()(组件) 返回一个 forwardRef组件,hoistStatics的作用为:将WrappedComponent中的属性或者方法添加到 forwarded
在这里插入图片描述
ConnectFunction返回经过优化,并且注入参数的组件
1.处理传入的 props (<组件 属性 />组件传入的属性)
在这里插入图片描述
2.childPropsSelector的值为 pureFinalPropsSelector 函数
在这里插入图片描述
在这里插入图片描述
1. initMapStateToProps 函数 和 initMapDispatchToProps 函数 实际调用 initProxySelector 函数 (mapStateToProps有值,
mapDispatchToProps有值并且为函数)
在这里插入图片描述
在这里插入图片描述
2.initMapStateToProps 函数和 initMapDispatchToProps 函数实际调用 initConstantSelector函数(mapStateToProps无值, mapDispatchToProps无值或者有值为函数)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.创建组件的 subscription, notifyNestedSubs,并且将 Provider 的 subscription 作为组件 subscription 的 parentSub
在这里插入图片描述
4. overriddenContextValue 将 subscription 替换为组件 subscription
在这里插入图片描述
5.使用 useReducer 触发 React 组件更新
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5. previousStateUpdateResult, wrapperProps(<组件 属性 />)变更时,计算 actualChildProps,调用 pureFinalPropsSelector =》handleFirstCall
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
mapStateToProps有值,mapDispatchToProps有值为函数时,mapStateToProps 为 proxy 的 mapToPropsProxy
在这里插入图片描述在这里插入图片描述
mapStateToProps无值,mapDispatchToProps无值,或者有值为对象时,mapStateToProps 为 constantSelector函数
在这里插入图片描述
6.返回组件
在这里插入图片描述
在这里插入图片描述
7.组件渲染后执行 LayoutEffect
在这里插入图片描述
第三个参数作为 useLayoutEffect 的 dependencies, 此函数无参数,每次都会执行
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
subscribeUpdates 方法中将 subscription.onStateChange = checkForUpdates,并调用 trySubscribe 和 checkForUpdates 方法
在这里插入图片描述
trySubscribe 的 parentSub 为 Provider 的 subscription,调用 parentSub.addNestedSub,并将 子 subscription 的 handleChangeWrapper 作为参数
在这里插入图片描述
listeners为parenSub中的 listeners,listener为子 subscription的handleChangeWrapper
在这里插入图片描述
将 Provider subscription 中的handleChangeWrapper函数注册到了store.subscribe中,Provider subscription中的 listeners 为 createListenerCollection的返回值
在这里插入图片描述
在这里插入图片描述
trySubscribe执行完,return listeners.subscribe(listener)
在这里插入图片描述
在这里插入图片描述
parentSub.addNestedSub 执行完,parentSub subscription 执行 listeners = createListenerCollection()

checkForUpdates()
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在调用 dispatch 函数时,会调用 store.subscribe() 注册的 parentSub subscription handleChangeWrapper函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.useStore
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.useReduxContext
在这里插入图片描述
5.useDispatch
在这里插入图片描述
6.useSelector 接收两个参数,selector 为 获取 state 的函数,equalityFn为新旧state值的对比函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
获取新的selectedState值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值