0%

类组件和函数组件的区别

假设Greeting组件,它支持定义成类和函数两种性质。
如果 Greeting 是一个函数,React 需要调用它。

1
2
3
4
5
6
// Greeting.js
function Greeting() {
return <p>Hello</p>;
}
// React 内部
const result = Greeting(props); // <p>Hello</p>

如果 Greeting 是一个类,React 需要先将其实例化,再调用刚才生成实例的 render 方法

1
2
3
4
5
6
7
8
9
// Greeting.js
class Greeting extends React.Component {
render() {
return <p>Hello</p>;
}
}
// React 内部
const instance = new Greeting(props); // Greeting {}
const result = instance.render(); // <p>Hello</p>

React通过下面方式来判断组件的类型:

1
2
3
4
5
6
// React 内部
class Component {}
Component.prototype.isReactComponent = {};
// 检查方式
class Greeting extends React.Component {}
console.log(Greeting.prototype.isReactComponent); // {}

欢迎关注我的其它发布渠道