React.Component 和 funtion 组件的区别
结论:需要根据state进行渲染时,使用React.Component;用不到state时,可以直接写函数组件。
Function 函数组件:可以接收入参(props),通过return返回dom结构。
function Hello(props) {return <h1>Hello, {props.name}!</h1>;
}
ReactDOM.render(
<Hello name="Jack" />,
document.getElementById('root')
);
React.Component 是一个class(类),不止可以接收props,也支持state,还包含了生命周期函数,在render函数内返回dom结构。
class Hello extends React.Component {constructor(props) {
super(props);
this.state = {
myname:""
};
}
componentDidMount(){
this.setState({
myname:"baby"
})
}
render() {
return (
<div>
<h1>Hello, {this.props.name}!</h1>
<h1>I am {this.state.myname}</h1>
</div>
);
}
}
ReactDOM.render(
<Hello name="Jack" />,
document.getElementById('root')
);
Hook 是React的新特性,通过 useState 和 EffectState 方法,让函数组件也支持了state。
// Hook写法import React, { useState, useEffect } from 'react';
function Example() {
const [count, setCount] = useState(0);
useEffect(() => {
document.title = `You clicked ${count} times`;
});
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
// 对应Class写法
class Example extends React.Component {
constructor(props) {
super(props);
this.state = {
count: 0
};
}
componentDidMount() {
document.title = `You clicked ${this.state.count} times`;
}
componentDidUpdate() {
document.title = `You clicked ${this.state.count} times`;
}
render() {
return (
<div>
<p>You clicked {this.state.count} times</p>
<button onClick={() => this.setState({ count: this.state.count + 1 })}>
Click me
</button>
</div>
);
}
}
以上是 React.Component 和 funtion 组件的区别 的全部内容, 来源链接: utcz.com/z/383955.html