Ich weiß nicht, wie ich einen Verweis auf die TripList-Instanz an die AddTrip-Komponente weiterleiten soll. Ich muss etwas tun, um TripList zu signalisieren, dass die Daten nach dem Hinzufügen einer neuen Reise aktualisiert werden sollen.Reagiere nativen Navigator und übergebe die Elternkomponente zum Kind.
In meinem render() Methode, innen <Navigator>
ich habe:
if (route.index === 1) {
return <TripList
title={route.title}
onForward={() => {
navigator.push({
title: 'Add New Trip',
index: 2,
});
}}
onBack={() => {
if (route.index > 0) {
navigator.pop();
}
}}
/>
} else {
return <AddTrip
styles={tripStyles}
title={route.title}
onBack={() => { navigator.pop(); }}
/>
}
Allerdings, wenn ich onBack() in AddTrip nennen, nach einer Reise Hinzufügen möchte ich Refresh() aufzurufen, auf traurige Mitteilung so die Neue Reise wird angezeigt. Wie kann ich die Dinge am besten strukturieren, um das zu tun? Ich vermute, ich muss TripList irgendwie zu AddTrip übergeben und dann kann ich refresh() aufrufen, bevor ich onBack() anrufe.
Ok, das macht Sinn. Ich hielt alle Trips in TripList.state. Wenn ich es zu einem globalen verschieben, macht es es einfacher. Allerdings kaufe ich mir das letzte bisschen über das Auffrischen nicht selbst. Es gibt keine Möglichkeit zu reagieren, um zu wissen, dass ich allTrips ersetzt habe - Sie müssten reagieren lassen, indem Sie es durch eine Art Proxy ersetzen, der eine Zuordnung erkennt - vorausgesetzt, das ist in Javascript möglich. Aus diesem Grund habe ich TripList.state und setState zum Ändern der Daten verwendet. Es ist jedoch möglich, dass navigator.pop() sicherstellt, dass render() erneut aufgerufen wird - ich werde es versuchen und sehen. Wenn Sie Ideen auf dieser Front haben, bin ich ganz Ohr. – Eloff
Ich schaffte es, es zur Arbeit zu bringen. Ich habe allTrips in der Render-Methode für die Komponente zwischengespeichert und dann implementiert. SollteComponentUpdate() {return this.cachedTrips! == allTrips; }. Der Navigator ruft das beim Wechseln von Szenen auf. Allerdings musste ich in einem Callback von einem initialen Aufruf von allTrips über fetch zu der Szene wechseln, da es sonst mit einem leeren allTrips gerendert wird und shouldComponentUpdate() erst dann aufgerufen wird, wenn von AWAY aus navigiert wird. – Eloff