このように見えるレデューサーのコードを作成する前に、リストがReact PropsにmapStateToProps経由で正しくマップされていても、再レンダリングされませんでした。コンポーネントを再レンダリングするトリガーとなるもの
case "ADDTOLIST":
let stateCopy = Object.assign({}, state);
let listsCopy = stateCopy.lists;
listsCopy.push(action.item);
return {...state, lists: listsCopy};
は、その後、私はちょうど私がこれにlistsCopyを設定する行を変更 - 私はリストの配列のコピーを作成するために、スライスを使用:
let listsCopy = stateCopy.lists.slice();
そして今、私のコンポーネントが正しく再描画します!だから私の質問は、コンポーネントの再レンダリングをトリガースライスの呼び出しですか?前と比べて、私はちょうどそれを普通に割り当てていました。
私がここで紛失していること/私が理解していないことはわかりませんか? "before"コードのコンソールログは、 "listsCopy"が期待どおりに変更されていることを示していたようでしたが、状態変更をトリガーしませんでした。
また、状態のコピーを使用していますが、それを変更していません。私はなぜスライスがここで違いを生むのか分かりません。
ありがとうございます!
これを追加するには、immutable.jsのようなライブラリを使用するのがreduxでうまく機能する理由があります。私の個人的な経験から、通常、オーバーヘッド(つまり定型文)と比較して、 –