Ich habe einen einfachen SEARCH_SUCCESS
Minderer, die updates api Antwort in dem Zustand von id wie folgt abgebildet:
[searchActionTypes.SEARCH_SUCCESS]: (state, { companies }) => {
return update(state, { $merge: _.indexBy(companies, '_id') })
},
jedoch, weil mein Zustand von id abgebildet wird, dann ist dies alle bestehenden Unternehmen in Staat zu ersetzen. Dies ist ein Problem, da ich zusätzliche Daten, die in bestehenden Unternehmen gespeichert sind, erhalten möchte.
Ich konnte nur durch die Unternehmen durchlaufen und manuell $merge
Zustand:
const newState = _.deepClone(state)
_.forEach(companies, company => newState[company._id] = state[company._id] ?
update(state[company._id], { $merge: company }) : company
)
return newState
Aber das fühlt sich klobig. Gibt es eine elegantere Möglichkeit, den verschachtelten Zustand zu aktualisieren, wenn die Schlüssel $merge
oder $set
nicht vorhanden sind, wenn Schlüssel nicht vorhanden sind?
Verwandte: https: // Stackoverflow .com/questions/32135779/Aktualisierungs-Nested-Data-in-Redux-Speicher. Siehe auch https://github.com/gaearon/normalizr. –
Die Frage, auf die Sie verwiesen haben, ist eine allgemeine Frage zum Aktualisieren des redux-Status mit einer akzeptierten Antwort, die react-addons-update empfiehlt. Ich benutze diesen Helfer bereits und verlinke ihn in meiner Frage. Abramov (Schöpfer von Redux) antwortet ebenfalls und empfiehlt Normalizer. Meine Daten sind bereits normalisiert, weshalb ich Datensätze nach ID indexiere. –
Um zu verdeutlichen, behebt meine Frage einen Mangel des update addon $ merge-Operators, da dieser nur oberflächliche, ähnlich wie lodash assign, zusammenführt. –