Mein Beispiel ist ein einfaches Bestellformular. I eine Hauptkomponente (Order
) und innerhalb dieser Komponente mache I dynamische Liste von untergeordneten Komponenten (OrderLine
)ReagierenJS. So rufen Sie die Methode der Komponente aus der übergeordneten Komponente auf
class Order extends React.Component {
...
render() {
return <div>
<strong>Total: $ {this.getTotal()}</strong>
<table id='orderlines' style={tableStyles}>
<tbody>
{this.getLines()}
</tbody>
</table>
</div>
}
getLines =() => {
return this.state.orderLines.map((item, _) =>
<OrderLine key={item.id} {...item} />)
}
}
Child Komponente (OrderLine
) hat Eingang (quantity
) und Verfahren getTotal()
, die für diese Linie, die die Summe berechnet
getTotal =() => (this.props.product.price * this.state.quantity).toFixed(2);
Ziel ist es, die Gesamtsumme für den Auftrag zu berechnen.
Ich möchte etwas wie sum(map(allOrderLines, (line) => line.getTotal()))
tun, aber ich kann nicht auf orderLine.getTotal()
von der Order
Komponente zugreifen.
Also, was ist der beste Weg, es zu tun? Ich weiß, wie man Elternstatus (geben Sie Callback-Funktion als Requisite) von Kind, aber ist es möglich, es von Eltern zu tun?
Voll Beispiel hier:
Großartig! es funktioniert genau so, wie ich es wollte! – zvadym
froh, geholfen zu haben :) –