reactjs里只要是setState
就会对render()里的东西进行渲染,但是我setState
了却没有反应
部份代码如下,我开了个定时器1秒钟setState
一次timer
,
但是在render()里打印还是没有时间的变化,这是何解?
class Main extends React.Component {
constructor() {
super();
this.isCancelTimer = false;
this.state = {
timer: '00天--时--分--秒'',
};
}
setTime() {
timer = setTimeout(() => {
let day = Math.floor(currentDate / 60 / 60 / 24),
hours = Math.floor(currentDate / 60 / 60 % 24),
minutes = Math.floor(currentDate / 60 % 60),
seconds = currentDate % 60;
if (!this.isCancelTimer) {
this.setState(Object.assign(this.state, {
timer: (''+day).padStart(2, 0)+'天'+(''+hours).padStart(2, 0)+'时'+(''+minutes).padStart(2, 0)+'分'+(''+seconds).padStart(2, 0)+'秒'
}));
}
}, 1000);
}
render() {
console.log(this.state.timer)//00天--时--分--秒
}
}
你这样Object.assign会直接更改 state,改成这样试试