关于reactjs render问题

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天--时--分--秒
        }
    }
阅读 1.8k
1 个回答

你这样Object.assign会直接更改 state,改成这样试试

this.setState(Object.assign({}, this.state, {
    timer: (''+day).padStart(2, 0)+'天'+(''+hours).padStart(2, 0)+'时'+(''+minutes).padStart(2, 0)+'分'+(''+seconds).padStart(2, 0)+'秒'
}));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题