Ben updates api yanıtı duruma böyle id tarafından eşleştirilmiş basit SEARCH_SUCCESS
düşürücü vardır: benim devlet kimliği ile eşleştirilmiş çünkü
[searchActionTypes.SEARCH_SUCCESS]: (state, { companies }) => {
return update(state, { $merge: _.indexBy(companies, '_id') })
},
Ancak, bu halde varolan herhangi şirketleri değiştirilmesi gerekir. Bu bir problem çünkü mevcut şirketlerde mevcut olan ekstra verileri korumak istiyorum.
Sadece şirketler aracılığıyla yineleme ve elle $merge
durumu:
const newState = _.deepClone(state)
_.forEach(companies, company => newState[company._id] = state[company._id] ?
update(state[company._id], { $merge: company }) : company
)
return newState
Ama bu aksak hissediyor. Anahtarlar mevcut değilse, koşullu olarak $merge
veya $set
olacak iç içe durumu güncelleştirmenin daha zarif bir yolu var mı?
İlgili: https: // stackoverflow .com/questions/32135779/update-nested-data-in-redux-store. Ayrıca bkz. Https://github.com/gaearon/normalizr. –
Bağlandığınız soru, redux durumunu, yanıt-addons güncellemesini kullanmanızı öneren kabul edilen bir yanıtla güncellemeyle ilgili genel bir sorudur. Bu yardımcıyı zaten kullanıyorum ve sorumuma bağladım. Abramov (redux'un yaratıcısı) ayrıca normalleştiriciye cevap verir ve önerir. Verilerim zaten normalize edildi, bu yüzden kayıtları neden kimliğe göre indeksliyorum. –
Sorunu açıklığa kavuşturmak gerekirse, benim sorum, güncelleştirme addon $ birleştirme işlecinin eksikliğini giderir, çünkü bu yalnızca lodash ataması gibi sığ bir şekilde birleşir. –