【发布时间】:2021-11-05 19:25:20
【问题描述】:
我是新来的反应。我想使用 setState 和 setInterval 创建一个计数器。 我不想将 react.dom 渲染放在一个间隔中,因为我知道这不是一个好习惯。 这是我迄今为止的努力:
class Counter extends React.Component {
state = {
counter: 0
}
increment = () => {
setInterval(() => {
this.setState({
counter: this.state.counter+1});
}, 1000);
};
render() {
return <div>
<p>{this.state.counter}</p>
</div>;
}
}
const el = <Counter />;
ReactDOM.render(
el, document.getElementById('root')
);
我也试过这样:
class Counter extends React.Component {
state = {
counter: 0
}
increment = () => {
this.setState({
counter: this.state.counter+1});
};
render() {
return <div>
<p>{this.state.counter}</p>
</div>;
}
}
setInterval(Counter.increment, 100)
const el = <Counter />;
ReactDOM.render(
el, document.getElementById('root')
);
他们都没有工作。 有什么问题?
【问题讨论】:
-
只是想知道你遇到了什么错误?
-
没有错误!它只显示 0
-
@nfn 在设置计数器时最好使用以前的状态:
this.setState(prevState => ({ counter: prevState.counter+1 })
标签: reactjs