react类式组件和函数组件

43 阅读1分钟

函数组件

image.png

  • 函数组件中this是undefined,因为balel编译后将jsx转为浏览器可以编译的js语言,ES5开启严格模式阻止this指向windows,所以这里的this是指向undifined。
  • 函数组件执行ReactDOM.render(...)之后发生了什么?
  1. React解析组件标签,找到MyComponent组件。
  2. 发现组件是使用函数定义的,随后调用该函数,将返回的虚拟Dom转化为真实Dom,随后呈现在页面中。

image.png

image.png

image.png

  • 类中构造器的this指向类的实例对象,类的方法放在原型对象上供实例使用。
  • 类中的构造器不是必须写的,要对实例进行一些初始化的操作,如添加指定属性时采写。
  • 如果A类继承了B类,且A类中写了构造器,那么A类构造器中的super必须要调用的。

类式组件

image.png

  • 创建的类式组件extends React.Component,在通过ReactDom渲染组件到页面。
  • 其中类式组件的render是放在组件的原型对象上,供实例使用。render中的this是组件的实例对象。
  • 执行了ReactDom.render(...)之后,发生了什么?
  1. React解析组件标签,找到了Mycomponent组件。
  2. 发现组建是使用类定义的,随后new出来该类的实例,并通过该实例调用到原型上的render方法。
  3. 将render返回的虚拟Dom转化为真实DOM,随后呈现在页面中。