最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • react-dom中的legacyRenderSubtreeIntoContainer 干了什么?

    正文概述 掘金(代小呆)   2021-02-18   894

    legacyRenderSubtreeIntoContainer

    接上:从ReactDOM.render开始学react源码

    legacyRenderSubtreeIntoContainer接收以下几个参数

    • parentComponent:父组件(React Component),通过ReactDOM.render调用的时候传的null,在编译后的代码中找到调用唯一传了parentComponent参数的是unstable_renderSubtreeIntoContainer,因此先跳过,后期遇到在详细看。

    react-dom中的legacyRenderSubtreeIntoContainer 干了什么?

    • children: ReactDOM.render()第一个参数,也就是render里的ReactElement对象;

    在下图中就是<h1>Hello World!</h1>

    react-dom中的legacyRenderSubtreeIntoContainer 干了什么?

    • container:根节点(容器),如上图中document.getElementById('container')就是;
    • forceHydrate:true 为服务端渲染,false为客户端渲染,通过ReactDOM.render方法渲染的是客户端渲染,为false(服务端渲染先不管,防止分散学习的思路)。
    • callback:组件渲染完成后的回调函数,应该不常用,我上面children中的截图里面添加了该函数,组件渲染完成后会在控制台输出“渲染dom结束”;
    function legacyRenderSubtreeIntoContainer(
      parentComponent: ?React$Component<any, any>,
      children: ReactNodeList,
      container: Container,
      forceHydrate:true 为 服务端渲染,false为客户端渲染,我们研究的是客户端渲染: boolean,
      callback: ?Function,
    )
    

    打印出legacyRenderSubtreeIntoContainer中通过render方法调用传入的参数; 可以看到parentComponent,container,forceHydrate,callback都可以理解,但是children的输入内容和<h1>Hello World!</h1>不太一样啊,是在哪里处理的?

    react-dom中的legacyRenderSubtreeIntoContainer 干了什么?

    还记得隔壁的babel吗? 点击查看babel去在线体验

    react-dom中的legacyRenderSubtreeIntoContainer 干了什么?

    这里是不是回想到了什么,如果之前仔细查看过官网的同学都知道,Babel 会把 JSX 转译成一个名为 React.createElement() 函数调用,因此上面legacyRenderSubtreeIntoContainer中打印的children实际上是通过React.createElement()处理过的(React.createElement先不研究,后期进行不下去再看);

    legacyRenderSubtreeIntoContainer中调用的那些函数

    源码(区分了环境): react-dom中的legacyRenderSubtreeIntoContainer 干了什么?

    编译后: react-dom中的legacyRenderSubtreeIntoContainer 干了什么?

    • topLevelUpdateWarnings:判断container容器是不是可以用的,里面各种error报错的,都是严重的错误

    react-dom中的legacyRenderSubtreeIntoContainer 干了什么?

    • warnOnInvalidCallback:

    接收两个参数,第一个是回调方法,第二个是一个标志函数的名字,这里render应该就是在报错的时候告诉我们是在render的方法中出现的错误。 warnOnInvalidCallback$1(callback === undefined ? null : callback, 'render');

    react-dom中的legacyRenderSubtreeIntoContainer 干了什么?

    可以看到这个方法也很简单,只是判断了下是不是function;

    未完待续……


    起源地下载网 » react-dom中的legacyRenderSubtreeIntoContainer 干了什么?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元