2017-05-29 2 views
0

Ich habe eine a-Box ähnlich wie twitter mit react erstellt. Ich habe mir die react-Dokumentation angesehen, die mehrere Komponentenlebenszyklen gefunden hat, aber nicht sicher, welche ich verwenden sollte, um meine Code-Leistung zu verbessern: componentDidMount oder componentWillMount?componentDidMount oder componentWillMount welches ich brauche

Wenn ich etwas in mein Textfeld eintippe, sehe ich ein Update in der Konsole, das den Textfeldwert druckt. Kann mir jemand helfen zu verstehen, welche Methode zu verwenden und wann in diesem Fall?

https://jsfiddle.net/c9zv7yf5/2/

class TwitterBox extends React.Component { 
    constructor(props) { 
    super(props); 
    this.state = { enteredTextBoxvalue : '' }; 
     this.handleChange = this.handleChange.bind(this); 

    } 

    handleChange(event) { 
    this.setState({enteredTextBoxvalue: event.target.value}); 

    if((event.target.value).length > 3) { 

     this.setState({className : 'wholeContainer'}); 
     //console.log("long characters"); 
    } 
    } 

    render() { 
     return (<div>Hello {this.props.name} 
       <textarea className={this.state.className} 
       value={this.state.enteredTextBoxvalue} 
       onChange = {this.handleChange}> 
       there should be only 140 characters 
      </textarea> 
     </div>); 
    } 
} 

ReactDOM.render(
    <TwitterBox name="World" />, 
    document.getElementById('container') 
); 
+0

Die offizielle Dokumentation eigentlich ganz gut erklärt, welche „Lifecycle-Methode“, in der Lage zu nutzen: https://facebook.github.io/react /docs/react-component.html –

+0

@TomVanRompaey hey Ich lese durch die Dokumentation aber nicht sicher, wann zu implementieren ... es wäre toll, wenn Sie mir helfen ... –

Antwort

0

componentWillMount befindet sich direkt vor der Komponente aufgerufen gerendert wird. componentDidMount wird direkt nach dem Rendern der Komponente aufgerufen.

Wenn Sie Daten vorbereiten müssen, verwenden Sie componentWillMount. componentDidMount wird im Allgemeinen unter dem Senden von api-Aufrufen oder dem Erfassen von Daten direkt nach dem Rendern der Komponente verwendet. Es wird dringend empfohlen, diese zu verwenden.

+0

Hallo können Sie in meinem Code aktualisieren ... es ist verwirrend –

0

componentWillMount:

Diese Funktion direkt aufgerufen wird, bevor die Komponente erster machen, so auf den ersten Blick ein perfekter Ort zu sein scheint, Daten setzen Logik Abrufen

componentDidMount:

Mit componentDidMount wird klar, dass Daten erst nach dem anfänglichen Rendern geladen werden. Dies erinnert Sie daran, den Anfangszustand ordnungsgemäß einzurichten, sodass Sie nicht mit einem undefinierten Status enden, der Fehler verursacht.

+0

Hallo können Sie in meinem Code aktualisieren ... es ist verwirrend –

0

Als Teil Ihrer Frage zur Leistung können Sie auch einen Blick auf shouldComponentUpdate bis avoid reconciliation werfen.

componentWillMount wird unmittelbar vor dem Mounting aufgerufen. Es wird vor render() aufgerufen.

componentDidMount wird unmittelbar nach dem Mounten einer Komponente aufgerufen.

+0

Hallo können Sie in meinem Code aktualisieren ... es ist verwirrend –

0

componentWillMount

  • Komponente im Begriff ist, zu machen, spielt die gleiche Rolle wie constructor
  • es keine Komponente in DOM ist noch kann man nichts tun DOM beteiligt Manipulation
  • setState() Aufruf synchron wird nicht auslösen Rendern als die Komponente noch nicht gerendert
  • würde ich nicht empfehlen hier async /api Anfragen telefonisch unter (technisch gibt es keine Garantie, sie fertig werden, bevor Komponente montiert werden soll, in diesem Fall die Ihre Komponente werden diese Daten nicht neu gerendert werden anzuwenden)

componentDidMount

  • Komponente wurde gerendert, es sitzt bereits im DOM
  • Sie können hier Manipulationen mit DOM-Elementen (z initialisieren Drittanbieter-Plugin)
  • Anruf async /api Anfragen usw.
+0

Hallo können Sie in meinem Code aktualisieren .... es ist verwirrend –

Verwandte Themen