【发布时间】:2021-04-17 19:37:10
【问题描述】:
以下 sn-p 演示了在 React 功能组件中使用的 javascript 计时器或间隔的行为与使用类 React 组件时的行为不同。 另外,我看到了不同的行为。就像混乱的执行而不是指定的时间一样。
有解决办法吗?因为我不喜欢回到 Component 并且不再(或几乎不)能够使用钩子了。
https://jsfiddle.net/L5mbqsk9/1/
const App = ()=>{
const [count, setCount] = React.useState(0);
const myfunc = ()=>{
setCount(count+1);
}
React.useEffect(()=>{
const tmr = setInterval(myfunc, 1000);
return () => clearInterval(tmr);
}, [])
return (
<div className="App">
<h1>app</h1>
{count}
</div>
);
}
class App2 extends React.Component
{
constructor(props) {
super(props);
this.state = { count: 0 };
this.tmr = {};
}
myfunc = () => {
this.setState({ count: this.state.count + 1 });
}
tmr;
componentDidMount() {
this.tmr = setInterval(this.myfunc, 1000);
}
componentWillUnmount() {
clearInterval(this.tmr);
}
render() {
return (
<div className="App">
<h1>App2</h1>
{this.state.count}
</div>
);
}
}
ReactDOM.render(
<div>
<div><App /></div>
<div><App2/></div>
</div>,
document.getElementById('container')
);
```
【问题讨论】:
标签: reactjs settimeout setinterval