2017-02-19 57 views
0

Im新手到React js,我不知道下面的代碼有什麼問題,但我得到setState不是函數錯誤。請幫我解決這個問題。Reactjs this.setState不是函數錯誤

class AppBarLayout extends React.Component { 
    constructor(props) { 
     super(props); 

     this.state = { 
     visibleSideBar:true, 
     slide:"" 
     } 
    } 
    showProfile(){ 

    this.setState({ 
     slide:'slide' 
    }); 
    console.log(this.state.slide); 
    } 
    render(){ 
    return(
      <div> 
     <header> 
      <NavBar show={this.showProfile}/> 
      <Profile slide={this.state.slide} /> 
     </header> 
     </div> 
    ); 
    } 
} 
export default AppBarLayout; 
+0

的可能的複製[無法訪問陣營實例(本)事件處理程序內(http://stackoverflow.com/questions/29577977/unable-to-access-react- instance-this-inside-event-handler) –

回答

2

擴展在Delapouite「如果你不喜歡綁定構造函數中的每個函數,你可以使用箭頭函數自動綁定到正確的上下文。

例如:

class AppBarLayout extends React.Component { 
    constructor(props) { 
     super(props); 

     this.state = { 
     visibleSideBar:true, 
     slide:"" 
     } 
    } 

    // Now showProfile is an arrow function 
    showProfile =() => { 
    this.setState({ 
     slide:'slide' 
    }); 
    console.log(this.state.slide); 
    } 

    render(){ 
    return(
     <div> 
     <header> 
      <NavBar show={this.showProfile}/> 
      <Profile slide={this.state.slide}/> 
     </header> 
     </div> 
    ); 
    } 
} 
export default AppBarLayout; 
+0

使用這個語法時要小心,它不是標準的(還),需要一個特定的Babel變換。 – Delapouite

+0

是的,雖然它[越來越] [http://caniuse.com/#search=arrow%20functions] –