Ngxsを学習していますが、patchState
とsetState
をいつ使用すればよいのか理解できません。違いは何ですか?
const state = ctx.getState();
let data = this.service.list();
ctx.setState({
...state,
feedAnimals: data
});
vs.
let data = this.service.list();
ctx.patchState({
feedAnimals: data
});
これらの2つのコードは同等です。 patchState
はsetState({...state, ... }
コードの簡略版です。
将来、patchState
は、同等性テスト(つまり、パッチが実際に値を変更した場合にのみ状態が変更される)とパッチオペレーター(これについてはまだ議論中です)を備えたより有用な不変性ヘルパーに進化する可能性があります。
patchState
を使用して、きちんと整理し、機能を活用することをお勧めします。
const state = context.getState();
state.permissions = action.payload;
context.setState(state);
const state = context.getState();
state.permissions = action.payload;
context.setState({ ...state });
const state = context.getState();
state.permissions = action.payload;
context.patchState(state);
すべての例は状態を更新します...しかし、最初の例は状態の変化に対してオブザーバブルをアクティブにしません。状態はimmutableなので、単純に編集して保存することはできず、編集できません。そして、常に古い状態を複製し、新しいコピーを編集して、この新しい状態を保存する必要があります。 patchState
はあなたのためにそれをします。