Как использовать patchState против setState в NGXS? - PullRequest
0 голосов

Я изучаю ngxs, но не могу понять, когда мне следует использовать patchState и setState?Какая разница?

const state = ctx.getState();
let data =  this.service.list();
ctx.setState({
    ...state,
    feedAnimals: data
});

против

let data =  this.service.list();
ctx.patchState({
    feedAnimals: data
});

Ответы [ 2 ]

0 голосов
/ 15 июня 2018

ЭТО НЕ РАБОТАЕТ ПРАВИЛЬНО

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);

Всепримеры обновляют состояние ... но первый не активирует наблюдаемое для изменений состояния, потому что состояние неизменное , что означает, что вы не можете просто отредактировать его и сохранить, оно не редактируется, и вывсегда придется клонировать старое состояние, редактировать новую копию и сохранять это новое состояние.patchState просто делает это для вас.

0 голосов
/ 22 мая 2018

Эти две части кода эквивалентны.patchState - это просто сокращенная версия кода setState({...state, ... }.

В будущем patchState, скорее всего, превратится в более полезного помощника по неизменности с проверкой на равенство (т. Е. Состояние будет изменено толькоесли исправление действительно изменяет какие-либо значения) и операторы исправления (это все еще обсуждается).

Я бы порекомендовал использовать patchState для аккуратности и воспользоваться возможностями, которые находятся на их пути.

...