2017-02-19 4 views
0

Im Neuling, um js zu reagieren, ich weiß nicht, was falsch ist mit unter Code, aber ich bekomme SetState ist kein Funktionsfehler.Bitte helfen Sie mir, dies zu beheben.Reactjs this.setState ist kein Funktionsfehler

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

Mögliche Duplikat [Kann nicht Instanz zugreifen reagieren (diese) innerhalb Ereignishandler] (http://stackoverflow.com/questions/29577977/unable-to-access-react- instance-this-inside-event-handler) –

Antwort

2

Erweiterung auf Delapouite ' s Antwort, wenn Sie nicht möchten, dass jede Funktion im Konstruktor gebunden wird, können Sie Pfeilfunktionen verwenden, um automatisch zu binden in den richtigen Kontext.

Zum Beispiel:

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

Sei vorsichtig mit dieser Syntax, sie ist (noch) nicht Standard und benötigt eine bestimmte Babel-Transformation. – Delapouite

+0

Yup, obwohl es [ziemlich da] wird (http://caniuse.com/#search=arrow%20functions) –

Verwandte Themen