2016-06-16 132 views
0
class Dashboard extends React.Component{ 

    constructor(props){ 
     super(props); 
     this.state = {navigation : ''} 
    } 

    render(){ 
     return(
      <div className="wrapper"> 
        <Navigation onNavigationChange={this.onNavigationChange.bind(this)}/> 
        <main> 
         <TopBar navigation={this.state.navigation}/> 
         <div className="content"> 
         <MiddleBar/> 
         {this.props.children} 
         </div> 
         <Footer /> 
        </main> 
      </div> 
     ); 
    } 

    onNavigationChange(selectedValue){ 
     this.setState({navigation : 'selectedValue'}); 
     debugger; 
    } 
} 

export default Dashboard; 

我正在將導航的ChangeChange回調傳遞給我的導航內容。它調用並返回所選狀態的值。但是當我嘗試setState this.setState({navigation:selectedValue})狀態沒有得到更新。setState沒有更新狀態

回答

3

this.setState({navigation : 'selectedValue'});不直接改變狀態。從React doc

setState()不會立即改變this.state,但會創建一個掛起狀態轉換。調用此方法後訪問this.state可能會返回現有值。

所以,當debugger;叫,this.state尚未改變

0

onNavigationChange(了selectedValue){ 的console.log(了selectedValue) //日誌了selectedValue如果精糾正錯字//低於本.setState to this.setState({navigation:selectedValue}); this.setState({navigation:'selectedValue'}); 調試器; }

0

Damien Leroux是對的。你不能指望在相同的事件循環中立即看到狀態變化。 把debuggerrender方法,看看你的狀態變化觸發重新繪製

只注意到下面

this.setState({navigation : 'selectedValue'}); 

這一行看起來像您使用的是硬編碼字符串'selectedValue'更新導航狀態而不是實際值selectedValue

相關問題