2017-02-24 4 views
-1

ich Reactjs studieren und einen Code-Block wie diese:, was die Verwendung von ist: this.method.bind (this)

import React from 'react'; 

class App extends React.Component { 
    constructor() { 
     super(); 

     this.state = { 
     data: [] 
     } 

     this.setStateHandler = this.setStateHandler.bind(this); 
    }; 

    setStateHandler() { 
     var item = "setState..." 
     var myArray = this.state.data; 
     myArray.push(item) 
     this.setState({data: myArray}) 
    }; 

    render() { 
     return (
     <div> 
      <button onClick = {this.setStateHandler}>SET STATE</button> 
      <h4>State Array: {this.state.data}</h4> 
     </div> 
    ); 
    } 
} 

export default App; 

Nach Klick-Taste, die 'setState ...' String wird auftauchen. Aber ich verstehe die Verwendung der this.setStateHandler.bind(this); Funktion nicht. Kann mir jemand das erklären?

+0

[Lesen Sie dies] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this) Sie sollten es verstehen. – Andrew

Antwort

2

this.setStateHandler().bind(this) setzt den Kontext für die Funktion setStateHandler() als Klassenobjekt. Dies ist notwendig, damit Sie innerhalb der Methode this.setState({...}) aufrufen können, da setState() die Methode React.Component ist. Wenn Sie nicht .bind(this) erhalten Sie einen Fehler, der setState() Methode ist undefiniert.

+1

Bitte ermutigen Sie keine Fragen wie diese, indem Sie sie beantworten. Dies hat mehrere Duplikate auf SOF und ist sehr einfach zu anderen Ressourcen googlen, die es erklären. Markieren Sie es als Duplikat und gehen Sie weiter. – caesay

+0

Sicher, tut mir leid :) noch neu. Wie bearbeite ich diese Fragen am besten? Lässt du sie einfach unbeantwortet? –

+0

Markieren Sie es als ein Duplikat (wie einige von uns getan haben) und es wird geschlossen und Link zu dieser anderen Frage, die bereits viele gute Antworten hat. – caesay

Verwandte Themen