【发布时间】:2021-08-29 22:06:35
【问题描述】:
通过不进入实际使用,我创建了一个简单的示例来解释我想要做什么。
我有一个状态对象{num:0},我想在每秒 10 秒后更新 num,据此,我创建了一个运行良好的类组件。
class App extends React.Component {
constructor() {
super();
this.state = {
num: 0
};
}
componentDidMount = () => {
for (let i = 0; i < 10; i++) {
setTimeout(() => this.setState({ num: this.state.num + 1 }), i * 1000);
}
};
render() {
return (
<>
<p>hello</p>
<p>{this.state.num}</p>
</>
);
}
}
现在我想在功能组件中复制相同的功能,但我做不到。我试过如下图:
const App = () => {
const [state, setState] = React.useState({ num: 0 });
React.useEffect(() => {
for (let i = 0; i < 10; i++) {
setTimeout(() => setState({ num: state.num + 1 }), i * 1000);
}
}, []);
return (
<>
<p>hello</p>
<p>{state.num}</p>
</>
);
};
谁能帮我解决我在这里做错了什么?
【问题讨论】:
标签: javascript reactjs react-hooks settimeout use-effect