redux
でstate
を正しく更新する方法がわかりません。私は重複したエントリーを得る。私の減速の1Reduxの状態を正しく更新する方法がわかりません
export default function reducer(state = STATE, action) {
switch (action.type) {
case type.WINDOW_ONE: {
return {
...state,
windowOne: {
...state.windowOne,
foo: action.bar,
}
}
}
}
}
あるstate
が
const STATE = {
windowOne: { ... }
windwoTwo: { ... }
windowThree: { ... }
}
どのように見えるか
ザッツ私は私のコンポーネント
function mapDispatchToProps(dispatch) {
return bindActionCreators(combinedActions, dispatch);
}
const mapStateToProps = state => {
const { windowOne } = state.windowOne;
return {
windowOne,
};
}
export default connect(mapStateToProps, mapDispatchToProps)(SomeComponent);
そして私の小道具に似状態をマップここに様々な減速機を組み合わせる
redux-logger
を使用すると、windowOne
にはstate
の全体がコピーされています。そこで、action
をトリガーした後、windowTwo
とwindowThree
が見つかりました。また、私はないconst { windowOne } = state
は十分なはずこれらの行
const { windowOne } = state.windowOne;
でwindowOne
を指定する必要がなぜわかりませんか?それは関連するかもしれません...
私は前にこのようにしていました。しかし、私は 'windowOne'、' windowTwo'と 'windowThree'の間でデータを交換する必要があるので、私が書いたコードに変更しました。私は私の '減量主義者 'を'州家'全体に渡して、 'windowOne'部分だけを返すと思った。それは 'state'を更新し、新たに作成されたデータは' STATE'を渡す別の 'reducer'でアクセス可能です。 'STATE.windowOne'で、私は更新データにアクセスできるはずですか? – Stophface
'combineReducers'を使用すると、渡して状態全体を返すと、各最上位の状態プロパティに入れ子になったコピーが作成されます。おそらく、単一のレデューサーを使用するか、「reduce-reducers」のようなパッケージを使用したいと思うかもしれません(combinedReducersを超えて)(http://redux.js.org/docs/recipes/reducers/BeyondCombineReducers.html#スライスレデューサー間の共有データ)。 – Oblosys