资讯专栏INFORMATION COLUMN

React-redux源码解析

hover_lew / 3015人阅读

摘要:所以一开始应该是以默认值传进去的设置,能让子组件拿到相当于返回只能有一个子组件和类型验证通常的做法是我们先通过创建好,然后赋给组件的属性。在组件内部,拿到这个,设置为属性,这样就能让它的所有组件都能通过拿到。

Provider

   //最后导出的是createProvider()。所以一开始storeKey应该是以默认值‘store’传进去的
   function createProvider(storeKey = "store", subKey) {
   const subscriptionKey = subKey || `${storeKey}Subscription`

   class Provider extends Component {
       //设置context,能让子组件拿到store
       //相当于返回 {store: this.store}
       getChildContext() {
         return { [storeKey]: this[storeKey], [subscriptionKey]: null }
       }

       constructor(props, context) {
         super(props, context)
         //this.store = props.store
         this[storeKey] = props.store;
       }

       render() {
         //只能有一个子组件
         return Children.only(this.props.children)
       }
   }
   
   //props和context类型验证
   Provider.propTypes = {
       store: storeShape.isRequired,
       children: PropTypes.element.isRequired,
   }
   Provider.childContextTypes = {

             [storeKey]: storeShape.isRequired,
            [subscriptionKey]: subscriptionShape,
        }
    
            return Provider
    }

通常的做法是我们先通过redux创建好store,然后赋给Provider组件的store属性。在Provider组件内部,拿到这个store,设置为context属性,这样就能让它的所有组件都能通过context拿到store。

   
       
   

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/97772.html

相关文章

  • 带着问题看 react-redux 源码实现

    摘要:更新类型及具体内容负责更新数据的具体逻辑。即根据当前及携带的信息合成新的数据。下面带着这些问题深入了解本质上也是高阶组件的一种实现。核心实现声明以被子组件获取。通过的实现,我们可以得到的重要性浅比较的实现由此可以看到的重要性。前言 Redux作为通用的状态管理器,可以搭配任意界面框架。所以并搭配react使用的话就要借助redux官方提供的React绑定库react-redux,以高效灵活的...

    JellyBool 评论0 收藏0
  • dva系列源码解读

    摘要:介绍概述本次对源码的解读除了传统的从入手外还将引入带入问题读源码的理念,因为只有这样当读完源码之后才会有切身的收获。 介绍 概述 本次对 dva 源码的解读除了传统的从 api 入手外还将引入带入问题读源码的理念,因为只有这样当读完源码之后才会有切身的收获。另外除了 dva 的源码外还会解读一些常用的 dva 插件的源码。 电子书 https://dva-source-docs.net...

    focusj 评论0 收藏0
  • 关于React-redux的Provider, connect的解析

    摘要:的实现原理作为一个通用的模块,主要还是用来应用项目中的变更通过做连接,可以在的项目中将两者结合的更好。上述便是两个核心的用法啦。如有不对,还请指正。 react-redux的实现原理: Redux作为一个通用的模块,主要还是用来应用项目中state的变更,通过react-redux做连接,可以在React+Redux的项目中将两者结合的更好。 React-redux是一个轻量级的封装库...

    elva 评论0 收藏0
  • react-redux用法及源码解读

    摘要:带有内部状态,内部可以使用。代表监听的全局,也可以说是全局的,表示该组件自身携带的方法。回答问题是通过应用的,将通过顶层组件传递到上下文环境中。所有页面集合缓存不用每次都重新加载通过绑定用法完参考文章 react-redux把组件分为UI组件和容器组件。先看图下图: showImg(https://segmentfault.com/img/bVbkVBz?w=1378&h=1194);...

    Zoom 评论0 收藏0
  • [源码解读] react-redux

    摘要:本文并不逐行地对源码进行细致分析,不如说是基于以下几个问题,对源码进行大致的扫览。我们已经知道,中,允许用户注册监听器,这些监听器会在每次执行结束后遍历触发。省略一些无关代码其中,是为了在嵌套的中嵌套执行。 react-redux 源码解读 [TOC] 前置知识 阅读本篇文章前,请先确认你是否了解以下知识: react redux 高阶组件 react diff 机制 其中高阶组件...

    Olivia 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<