鍍金池/ 問答/數(shù)據(jù)庫  HTML/ 關(guān)于reactjs render問題

關(guān)于reactjs render問題

reactjs里只要是setState就會(huì)對render()里的東西進(jìn)行渲染,但是我setState了卻沒有反應(yīng)
部份代碼如下,我開了個(gè)定時(shí)器1秒鐘setState一次timer,
但是在render()里打印還是沒有時(shí)間的變化,這是何解?

class Main extends React.Component {
        constructor() {
            super();
            this.isCancelTimer = false;
            this.state = {
                timer: '00天--時(shí)--分--秒'',
            };
        }
        
        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)+'時(shí)'+(''+minutes).padStart(2, 0)+'分'+(''+seconds).padStart(2, 0)+'秒'
                    }));
                }
            }, 1000);
        }
        render() {
            console.log(this.state.timer)//00天--時(shí)--分--秒
        }
    }
回答
編輯回答
話寡

你這樣Object.assign會(huì)直接更改 state,改成這樣試試

this.setState(Object.assign({}, this.state, {
    timer: (''+day).padStart(2, 0)+'天'+(''+hours).padStart(2, 0)+'時(shí)'+(''+minutes).padStart(2, 0)+'分'+(''+seconds).padStart(2, 0)+'秒'
}));
2018年7月15日 12:12