2017-05-31 42 views
0
componentWillMount(){ 
    var _this=this;  
    this.setState({status1:'changed'}); 
    setTimeout(()=> _this.setState({status2:'changed'}),2000); 
} 
render(){ 
    console.log('state object',this.state); 
    return(
     <div></div> 
    ); 
} 

更新狀態,但在服務器端(使用快遞),它只會更新從「默認」到「改變」,但狀態2顯示「的狀態1默認'。如何在服務器端更新setTimeout中的狀態。的setState()不setTimeout的對客戶端它的工作原理服務器端

+2

邊注:不用了,'VAR _this =這一點;'東西帶箭頭的功能。 –

+0

你能夠複製客​​戶端問題嗎?如果是這樣,請使用Stack Snippets('[<>]'工具欄按鈕)使用** runnable ** [mcve]更新您的問題。 Stack Snippets支持React,包括JSX; [這是如何做一個](http://meta.stackoverflow.com/questions/338537/)。 (如果我只是[代碼複製到的jsfiddle,並添加相關的東西(https://jsfiddle.net/7gpn5jva/),我不能複製問題的客戶端。)在客戶端 –

+0

工作正常,它同時更新STATUS1和狀態2,但在服務器端它沒有更新的setTimeout狀態2 – rohit

回答

0

你有沒有試過?:

componentWillMount(){ 
    this.setState({status1:'changed'}); 
    setTimeout(() => {this.setState({status2:'changed'})},2000); 
} 
+0

相同的結果得到更新..沒有更新 – rohit

+0

如此看來,setTimeout的將不在服務器上工作因爲它是「BOM(瀏覽器對象模型)的一部分」。我不知道他們在這裏https://github.com/reactjs/React.NET/issues/249討論,但似乎他們有同樣的問題,雖然 – thinhvo0108

+0

我想得一樣,但是內部的定時器功能Node.js的實施類似的API,通過Web瀏覽器提供的計時器API並沒有需要調用需要(「定時器」)使用的API。 [鏈接](https://nodejs.org/api/timers.html)......甚至當我用別的東西像一個AJAX替代setTimout調用的輸出是一樣的,沒有狀態變化 – rohit

相關問題