ReactElement

React系列(2) ReactElement

react/src/ReactElement.js

React.createElement做了什么

  1. 先判断config中内置props(key,ref,self,source)存在且有效,则赋值给新声明的变量
  2. 再将config中非内置的props 给新声明的props(key和ref不会跟其他config中的变量一起被处理,而是单独作为变量出现在ReactElement上。)
  3. 判断如果孩子节点为一个,则赋值给props.children。如果孩子节点有多个,则将其以数组的形式赋值给props.children
  4. 如果存在默认值,且存在默认值的属性在props数组中为undefined,则将该属性赋值为默认值。(为null不赋值为默认值)
  5. 返回一个ReactElement对象
export function createElement(type, config, children) {
   
  let propName;

  // Reserved names are extracted
  const props = {
   };

  let key = null;
  let ref = null;
  let self = null; // 用于dev
  let source = null; // 用于dev

  if (config != null) {
    // 处理config中的属性
    if (hasValidRef(config)) {
   
      // config里存在合理的ref就将其放入之前声明的ref变量
      ref = config.ref;
    }
    if (hasValidKey(config)) {
   
      // config里存在合理的key就将其放入之前声明的key变量
      key = '' + config.key;
    }

    self = config.__self === undefined ? null : config.__self;
    // config.__self存在就放入self 用于dev
    source = config.__source === undefined ? null : config.__source;
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值