2016-11-14 6 views
0

Ich habe diese Container-Komponente (Eltern) und Kind-Komponente. Ich baue meine App mit Container-Komponenten-Muster (ich versuche :)).Wie Zugriff auf diese Werte in Reagieren?

Also übernimmt Eltern alle Statusbehandlung, während Kind nur Requisiten akzeptiert und basierend auf ihnen Ausgaben anzeigt.
Aber ich kam zu diesem kleinen Problem: Kind zeigt 2 Tasten (+ und -) und zwei Radio-Tasten (rufen Sie 1 und 2). Basierend auf dem Radio, das überprüft wird, muss ich den Zustand bei den Eltern aktualisieren.

Ich dachte daran, es durch ref, aber ich werde mit guten Praktiken bleiben und vermeiden, es zu verwenden.
Andere Idee, über die ich nachgedacht habe, war, die Funktion zu übergeben, die beim Drücken der Taste (binded to parent) aufgerufen wird, aber ich sehe keine Möglichkeit, diese Funktion mit dem in der untergeordneten Komponente übergebenen Argument aufzurufen.

Kind:

<label><input type='radio' name='time'/> Work time</label> 
<label><input type='radio' name='time' /> Break time</label> 
<button onClick={this.props.valueControl} className='add'>+</button> 
<button onClick={this.props.valueControl} className='sub'>-</button> 

Vielen Dank für jede Hilfe!

+0

Was ist Ihr Problem bei der Verwendung von Refs? – Pineda

+0

Sie werden als schlechte Übung betrachtet, deshalb vermeide ich es, sie zu verwenden. – Krizzu

Antwort

1

Die Art und Weise mit den Eltern von Ihrem Kind Komponente kommunizieren würde, ist über Rückrufe in mit Eigenschaften übergeben:

in Parent.js:

... 
    someEventOccured(event) { 
    this.modifyState(); 
    } 

    render() { 
    ... 
    <child-component onSomeEvent={this.someEventOccured.bind(this)}> 
    ... 
    } 
} 

in Child.js:

... 
    render() { 
    ... 
    <button onClick={this.props.onSomeEvent}></button> 
    ... 
    } 
} 

Im wirklichen Leben würden Sie wahrscheinlich eine Methode von Child an das onClick anhängen, das das Ereignis verarbeitet und nur die Daten zurück an das Parent anstelle des gesamten Ereignisses sendet.

+0

Ja, aber meine Frage ist: Wie bekomme ich Werte von Kindkomponenten? Wie würde ich gerne überprüfen, welche Optionsschaltfläche in der untergeordneten Komponente aktiviert ist, damit ich entscheiden kann, welche Zahl den Wert erhöhen soll. Wie mache ich das in der Funktion, die an das Kind weitergegeben wird? – Krizzu

+0

Wenn Sie auf Werte vom untergeordneten Element zugreifen müssen, bedeutet dies, dass Sie den Status im falschen Controller speichern. Eltern sollten über Rückrufe der Änderungen informiert werden, die sie betreffen. Wenn Sie den Status eines Kindes abfragen möchten, ohne dass etwas in diesem Kind passiert, bedeutet dies, dass der Staat im Elternteil leben soll. – norbertk

+0

Hey, danke! Ich habe es geschafft, doof ich :) Ich habe eine weitere Funktion von Eltern hinzugefügt, um auf Kinder bei Eingabe klicken klicken. Funktioniert ausgezeichnet :) – Krizzu