私はReduxストアで新しいアクションを作成しています。 私はすべてが "overlayVis"の特性を持つ項目のリストを持っています。私は指定されたIDを除いて、これらのすべてを真に設定したい。現在の実装は還元レデューサーの配列に対する複数の更新
case ITEM_OVERLAY_TOGGLE:
// object to be updated and returned
var returnObj = state.data;
state.data.map((item) => {
if (item.id === action.id) {
returnObj = Object.assign({}, ...state, {
data: [
...state.data.slice(0, item.id),
Object.assign({}, ...state.data[item.id], {overlayVis: false}),
...state.data.slice(item.id + 1)]
});
} else if (!item.overlayVis) {
returnObj = Object.assign({}, ...state, {
data: [
...state.data.slice(0, item.id),
Object.assign({}, ...state.data[item.id], {overlayVis: true}),
...state.data.slice(item.id + 1)]
});
}
});
return returnObj;
です。各繰り返しは前回の反復よりも優先されるため、アクションが実行されるたびに1回だけ変更されます。私は "... state"の代わりに "state"と "returnObj"を使用しようとしましたが、うまくいきませんでした。私は長い時間ここに投稿していないが、私はアイデアがありません。
ご協力いただきますようお願い申し上げます。
を試してみてください...事がたくさん明確に見えます!ありがとう、完璧に動作するようです。 – Oli
待ってください...これは、すべてのアイテムを一から再作成しますか? – Oli
はい、そうです。しかし、そうしないと、Reactコンポーネントが保持する参照は同じままです。つまり、Componentは何も変更されていないと考えます。あなたがすべての突然変異についての参照を変更することは本当に重要です。 –