Распространение состояний NGXS в setState - PullRequest
0 голосов
/ 02 июня 2019
import { State, Action, StateContext } from '@ngxs/store';

export class FeedAnimals {
  static readonly type = '[Zoo] FeedAnimals';
}

export interface ZooStateModel {
  feed: boolean;
}

@State<ZooStateModel>({
  name: 'zoo',
  defaults: {
    feed: false
  }
})
export class ZooState {
  @Action(FeedAnimals)
  feedAnimals(ctx: StateContext<ZooStateModel>) {
    const state = ctx.getState();
    ctx.setState({
      ...state,
      feed: !state.feed
    });
  }
}

Я изучаю ngxs из gitbook, выше блок скопирован оттуда.В этом примере ...state назначен объекту.зачем нам это нужно?поэтому у нас есть только один фид свойств объекта, и мы уже присвоили feed: !state.feed

1 Ответ

0 голосов
/ 02 июня 2019

Вам нужно использовать ... состояние, потому что вы хотите изменить состояние текущего состояния

Используя оператор распространения, вы выполняете операцию копирования, чтобы предыдущее состояние было скопировано в новый объект состояния, а выизменить данные в новом созданном объекте состояния.

const a = [1, 2, 3]

const b = [...a, 4, 5, 6] =>  [1, 2, 3, 4, 5, 6]

Итак, этот код

...state,
feed: !state.feed

Вы создаете новую копию объекта состояния и изменяете свойство feed внутри своего объекта состояния

...