Ich bin neu in React und habe mich entschieden, etwas Einfaches wie einen Rechner zu erstellen, um die Grundlagen zu üben. Allerdings habe ich einige Schwierigkeiten, die Logik hinter dem Informationsfluss zu verstehen, und entweder gibt es eine Möglichkeit für eine untergeordnete Komponente, die Logik zu tun und das Elternelement auf natürliche Weise zu aktualisieren.Ändern des Status einer übergeordneten Komponente mithilfe einer Funktion in der untergeordneten Komponente
Zum Beispiel dies die Grundstruktur meines Rechners ist:
class Calculator extends React.Component {
render() {
return (
<div className="calculator-main">
<Screen numberOnScreen={this.state.numberOnScreen}/>
<NumberButton number={7} />
<NumberButton number={8} />
<NumberButton number={9} />
<OperatorButton operator="plus" view="-"/>
....
</div>
)
}
}
class Screen extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<div className="screen">{new Intl.NumberFormat().format(this.props.numberOnScreen)}</div>
);
}
};
class NumberButton extends React.Component {
constructor(props) {
super(props);
}
render() {
const zeroClass = this.props.number === 0 ? " zero" : "";
return (
<button type="button" className={"number" + zeroClass}>{this.props.number}</button>
);
}
};
So weiß ich, dass:
- ich die Funktionen innerhalb Rechner erstellen und es als Stütze zu den Tasten passiert Komponenten, und rufen Sie onClick. (Aber es fühlt sich einfach seltsam an).
- Erstellen Sie einen Ereignis-Listener in der Calculator-Komponente, erstellen Sie die -Funktion innerhalb der Schaltflächenkomponente und übergeben Sie den Wert über das Ereignis trigger; (Aber es fühlt sich künstlich an).
- Verwenden Sie eine Art von Global Store?
Aber gibt es keine natürliche Reaktion, dies zu tun?
Danke!
Könnten Sie erarbeiten, was Sie durch 'natürliche' bedeuten? Ich dachte, der natürliche Weg für die Reaktion ist es, die Funktion von der Elternkomponente zu den Kinderkomponenten zu übergeben, wie in dem Artikel hier erwähnt: https://facebook.github.io/react/docs/thinking-in-react.html –
Ja, ich weiß, dass dies die Logik hinter React ist, aber es fühlt sich unordentlich an, alle meine Funktionen in der Elternkomponente zu deklarieren, eher in den Tastenkomponenten ... Also meine Frage ist im Grunde, ist "das ist es" und du musst arbeiten mit diesem Fluss, oder gibt es einen "reaktiven" Weg, um Ihre Logik in die Kindkomponenten zu bringen und den Zustand des Elternteils zu aktualisieren. – Sveta
Technisch gesehen können Sie eine Zustandsverwaltungsbibliothek wie redux oder flux verwenden, um den Status der übergeordneten Komponente zu speichern und die Logik zu schreiben, um ihren Status in der untergeordneten Komponente zu ändern, sodass Sie keine Logik in der übergeordneten Komponente schreiben müssen. –