In meiner Anwendung ich vielen Teil des Staates, die significative nur, wenn der Benutzer angemeldet istReagieren Redux -. Conditional Wähler
Wenn der Benutzer angemeldet ist, und navigieren direkt zu einer Seite, Router die Seite anzuzeigen muss aber einen asynchronen Anruf tätigen, damit ein Stück des Staates noch nicht besetzt ist.
Nun nehme ich an, dass ich eine Schaltfläche in der Navigationsleiste anzeigen muss, die einen Teil des Status übernehmen muss, aber dieser Status ist seit der asynchronen Aufruffinis nicht ausgefüllt.
Mehr pratically, ich habe diesen Selektor:
export const getSelectedCustomer = state => state.systems.selectedCustomer;
Damit gibt es kein Problem, denn selectedCustomer
Teil des initialState
Minderer ist
Das Problem in diesem Selektor ist:
export const getSelectedCustomerName = state => {
return state.systems.entities[getSelectedCustomer(state)].customer;
}
Der Teil des Staates entities
in initialState
ist ein leeres Array und wird bevölkert d bei asynchronem Anruf.
Also, wenn die Anwendung starten und i-Karte (mit connect - mapStateToProps
) dem Wähler getSelectedCustomerName
i den Fehler erhalten, weil entities
leer und sicher ist, customer
Feld gibt es noch nicht
Eine einfache Lösung, wenn in nehmen Legen Sie einige if-else
, aber ich werde dies in "jeder" Teil der Anwendung tun müssen.
Ich frage, ob es eine bessere Lösung ist, diese ...
stolperte darüber. Genossen die JavaScript/Ruby-Nebeneinanderstellung. – larz