类式组件
复习class
- 类中的构造器不是必须要写的,要对实例进行一些初始化的操作,如添加指定属性时才写。
- 如果A类继承了B类,且A类中写了构造器,那么A类构造器中的super是必须要调用的。
- 类中所定义的方法,都放在了类的原型对象上,供实例去使用。
```javascript
//创建一个Person类
class Person {
//构造器方法
constructor(name,age){
} //一般方法 speak(){//构造器中的this是谁?—— 类的实例对象this.name = namethis.age = age
} }//speak方法放在了哪里?——类的原型对象上,供实例使用 //通过Person实例调用speak时,speak中的this就是Person实例 console.log(`我叫${this.name},我年龄是${this.age}`);
//创建一个Student类,继承于Person类
class Student extends Person {
constructor(name,age,grade){
super(name,age)
this.grade = grade
this.school = ‘尚硅谷’
}
//重写从父类继承过来的方法
speak(){
console.log(我叫${this.name},我年龄是${this.age},我读的是${this.grade}年级);
this.study()
}
study(){
//study方法放在了哪里?——类的原型对象上,供实例使用
//通过Student实例调用study时,study中的this就是Student实例
console.log(‘我很努力的学习’);
}
}
<a name="Aigsu"></a>
### react类式组件
**渲染流程 : 执行了ReactDOM.render(<MyComponent/>.......之后,发生了什么?**
1. React解析组件标签,找到了MyComponent组件。
1. 发现组件是使用类定义的,随后new出来该类的实例,并通过该实例调用到原型上的render方法。
1. 将render返回的虚拟DOM转为真实DOM,随后呈现在页面中。
```javascript
//1.创建类式组件
class MyComponent extends React.Component {
render(){
//render是放在哪里的?—— MyComponent的原型对象上,供实例使用。
//render中的this是谁?—— MyComponent的实例对象 <=> MyComponent组件实例对象。
console.log('render中的this:',this);
return <h2>我是用类定义的组件(适用于【复杂组件】的定义)</h2>
}
}
//2.渲染组件到页面
ReactDOM.render(<MyComponent/>,document.getElementById('test'))
