2016-11-21 3 views
1

Also habe ich eine Elternkomponente und eine Login-Komponente.Requisiten/Status an die/von der Elternkomponente übergeben

Ich möchte der Benutzer ihre Details eingeben und dann auf Senden und dann speichern/übergeben Sie diese Details herum, so dass sie von anderen Komponenten verwendet werden können.

Wie ist das am besten in React getan?

zum Beispiel habe ich dieses Eingabefeld in meinem Log-in-Komponente

<p> 
    <input type="text" id="playerName" value={this.props.nameValue} onChange={this.props.handleNameChange}/> 
</p> 

Dann möchte ich den Wert zu übergeben, die an die Mutterkomponente eingegeben wird

Ich habe diese Funktion in meinem Stammkomponente:

handleNameChange(event){ 
    this.setState({nameValue: event.target.value}) 
    }; 

und in meiner Rückkehr habe ich:

return (
     <div> 
     <LoginPage handleClick={this.handleClick.bind(this)} handleNameChange={this.handleNameChange.bind(this)}/> 
     </div> 
    ) 

Wie auch immer, wenn ich console.log (NameValue) bekomme ich undefiniert. irgendwelche Ideen? kann bei Bedarf mehr Code hinzufügen/relevant

+0

keine Antwort auf Ihre Frage, aber: wenn Sie brauchen Eltern auf die Kinder zu sprechen, verwenden Sie 'props' . Wenn Sie Kinder brauchen, um mit Eltern zu sprechen, verwenden Sie ['refs'] (https://facebook.github.io/react/docs/refs-and-the-dom.html). Wenn Sie mit anderen Personen sprechen möchten, verwenden Sie einen globalen Store. Und sieh dir [this] an (https://facebook.github.io/react/docs/two-way-binding-helpers.html). –

Antwort

1

Von Ihrem Beispiel ist man nie nameValue das Kind Komponente zu übergeben.

aktualisiert Ihr Beispiel für die LoginPage Rendering, über Requisiten this.state.nameValue in die untergeordnete Komponente übergeben:

return (
    <div> 
    <LoginPage 
     handleClick={this.handleClick.bind(this)} 
     handleNameChange={this.handleNameChange.bind(this)} 
     nameValue={this.state.nameValue} 
    /> 
    </div> 
) 
+0

Prost! gute Antwort –

+0

Wie funktioniert das, wenn ich die Funktion aufrufen und nicht auf ein Formular abfragen muss? –

1

Ihr Ansatz mit Staat und Requisiten ist in Ordnung. Sind Sie sicher, dass Sie nicht nur mit ...

sollten
console.log(this.state.nameValue); 

Dies ist ein funktionierendes Beispiel

class Parent extends React.Component { 
    constructor() { 
     super(); 
     this.state = { 
      nameValue:'' 
     }; 
    } 
    render() { 
     return (
      <Child handleClick={this.handleClick.bind(this)} handleNameChange={this.handleNameChange.bind(this)} nameValue={this.state.nameValue} /> 
     ); 
    } 
    handleNameChange(e) { 
     this.setState({ 
      nameValue: e.target.value 
     }); 
    } 
    handleClick() { 
     alert(this.state.nameValue); 
    } 
} 

class Child extends React.Component { 
    render() { 
    return (
     <div> 
      <input type="text" value={this.props.nameValue} onChange={this.props.handleNameChange} /> 
      <button onClick={this.props.handleClick}>Click Me!</button> 
     </div> 
    ); 
    } 
} 

JSFiddle here.

+0

Wie funktioniert das, wenn ich die Funktion aufrufen muss statt auf ein Formular zu klicken? –

+0

Ich bin mir nicht sicher, was Sie fragen, meine Antwort hat kein Formular, geschweige denn eins. –

Verwandte Themen