Javascript componentDidMount函数中的setinterval是否会在每次运行时创建一个新线程?
我正在创建一个简单的web应用程序,其中时间每毫秒显示和更新一次。我的代码如下:Javascript componentDidMount函数中的setinterval是否会在每次运行时创建一个新线程?,javascript,reactjs,Javascript,Reactjs,我正在创建一个简单的web应用程序,其中时间每毫秒显示和更新一次。我的代码如下: class Time extends React.Component { constructor(props) { super(props); this.state = { date: "", time: "" } this.updateTime = this.updateTime.bind(this); }
class Time extends React.Component {
constructor(props) {
super(props);
this.state = {
date: "",
time: ""
}
this.updateTime = this.updateTime.bind(this);
}
componentDidMount() {
this.interval = setInterval(this.updateTime, 1);
}
componentWillUnmount() {
clearInterval(this.interval);
}
updateTime() {
let dateObject = new Date();
let date = dateObject.toDateString();
let hour = dateObject.getHours().toString();
let minute = dateObject.getMinutes().toString();
let second = dateObject.getSeconds().toString();
let millisecond = dateObject.getMilliseconds().toString();
let time = hour + " : " + minute + " : " + second + " : " + millisecond;
this.setState({
date: date,
time: time
});
}
render() {
return (
<div>
<TitleBar/>
<div className="time-div">
<p className="date-txt" value={this.state.date}> {this.state.date} </p>
<p className="time-txt" value={this.state.time}> {this.state.time} </p>
</div>
</div>
);
}
}
export default Time;
上课时间延长React.Component{
建造师(道具){
超级(道具);
此.state={
日期:“,
时间:“
}
this.updateTime=this.updateTime.bind(this);
}
componentDidMount(){
this.interval=setInterval(this.updateTime,1);
}
组件将卸载(){
clearInterval(这个.interval);
}
更新时间(){
让dateObject=新日期();
让date=dateObject.toDateString();
让hour=dateObject.getHours().toString();
让minute=dateObject.getMinutes().toString();
设second=dateObject.getSeconds().toString();
设毫秒=dateObject.GetMillimes().toString();
让时间=小时+“:“+分钟+”:“+秒+”:“+毫秒;
这是我的国家({
日期:日期:,
时间:时间
});
}
render(){
返回(
{this.state.date}
{this.state.time}
);
}
}
导出默认时间;
考虑到componentDidMount函数在装入Time组件时运行,我的问题如下:
此componentDidMount函数中的setInterval函数是否在每次间隔运行时都记得自己?或者,它是否会再次运行componentDidMount函数,并且其中的setInterval函数会创建一个新线程
基本上,我想问的是,这个程序的运行方式是:
componentDidMount()
仅在初始渲染时运行,而不在状态更新时运行。
所以当你用过
componentDidMount() {
this.interval = setInterval(this.updateTime, 1);
}
setInterval
将首先启动,此过程将在后台继续运行
直到您卸载
您的组件,在这种情况下,将对设置间隔
进行清理
componentWillUnmount() {
clearInterval(this.interval);
}
当然,伙计:)快乐的编码。。。我建议你调查一下useffect()钩子。。。钩子很可怕。。。