React源码解析7-indeminate

175 阅读1分钟

1.函数组件在创建fiber时候的tag是指定为indeterminate的

这时候创建instance流程会根据这个函数的返回结果来判断是按照函数组件去创建fiber和更新还是类组件去创建fiber和更新

  typeof value === 'object' &&
    value !== null &&
    typeof value.render === 'function' &&//!有render方法 会认为这个class组件
    value.$$typeof === undefined

返回值满足这个条件将被认为是类组件

不满足将认为是函数组件

import React from 'react'

export default function TestIndeterminateComponent() {
  return {
    componentDidMount() {
      console.log('invoker')
    },
    render() {
      return <span>aaa</span>
    },
  }
}

返回值是个对象且有render方法 按照类组件去创建 那么return 的对象生命周期将会执行