04 React Hook 定时器
随机间隔计数器
class 版本
import React from 'react'
class ClassVersion extends React.Component {
constructor(props) {
super(props)
this.state = {
count: 0,
delay: 1000
}
}
componentDidMount() {
this.timer = setInterval(this.tick, this.state.delay)
}
componentDidUpdate(prevProps, prevState) {
if (prevState.delay !== this.state.delay) {
clearInterval(this.timer)
this.timer = setInterval(this.tick, this.state.delay)
}
}
componentWillUnmount() {
clearInterval(this.timer)
}
handelDelayChange = e => {
this.setState({
delay: +e.target.value
})
}
tick = () => {
this.setState({
count: this.state.count + 1
})
}
render() {
const { count, delay } = this.state
return (
<>
<h1>Class 版本定时器</h1>
<Input onChange={this.handelDelayChange} defaultValue={delay} />
<div>
Count: {count} Delay: {delay}ms
</div>
</>
)
}
}Hook 版本
最后更新于