react组件有两种形式,分为class组件跟function组件,以实现clock为例子,分别实现。代码如下
import React, {useState, useEffect} from 'react'
function App() {
return (
<div className="App">
6546546
<ClassComponent />
<FunctionComponent />
</div>
);
}
export default App;
class ClassComponent extends React.Component {
state= {
num: new Date()
}
componentDidMount() {
this.timer = setInterval(() => {
this.setState({
num: new Date()
})
}, 1000);
}
componentWillUnmount() {
clearInterval(this.timer)
}
render() {
const { num } = this.state;
return (
<>
<div>{num.toLocaleTimeString()}</div>
</>
);
}
}
const FunctionComponent = () => {
const [num, setNum] = useState(new Date());
// useEffect Hook 看做componentDidMount,componentDidUpdate和componentWillUnmount
useEffect(() => {
const timer = setInterval(() => {
setNum(new Date())
}, 1000);
return () => clearInterval(timer)
}, [])
return(
<div>{num.toLocaleTimeString()}</div>
)
}