2016-06-16 110 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

相关问题