0
は、私はこのようなidでマップされた状態にupdates APIレスポンスシンプルSEARCH_SUCCESS
減速持っている:私の状態はidでマップされているため
[searchActionTypes.SEARCH_SUCCESS]: (state, { companies }) => {
return update(state, { $merge: _.indexBy(companies, '_id') })
},
をしかし、この状態で既存の企業を置き換えるです。これは問題です。なぜなら、状態の既存の企業に保存されている余分なデータを保存したいからです。
私はちょうど会社を反復処理でき、手動$merge
状態:
const newState = _.deepClone(state)
_.forEach(companies, company => newState[company._id] = state[company._id] ?
update(state[company._id], { $merge: company }) : company
)
return newState
しかし、これは不格好な感じ。キーが存在しない場合、条件付きで$merge
または$set
の入れ子状態を更新するよりエレガントな方法はありますか?
関連:https://でのstackoverflow .com/questions/32135779/updating-nested-data-in-redux-store。 https://github.com/gaearon/normalizrも参照してください。 –
あなたがリンクしている質問は、reactx-addons-updateを使用することを推奨する受け入れられた回答でreduxの状態を更新するという一般的な質問です。私はすでにこのヘルパーを使用して、私の質問でそれにリンクしています。 Abramov(reduxの創造者)もノーマライザーに反応して推奨します。私のデータはすでに正規化されているので、なぜIDでレコードをインデックスしているのですか? –
明確にするために、私の質問は、アドオン$マージ演算子の更新の欠点に対処しています。それは、lodashの割り当てと同じように、浅いマージだけです。 –