Как получить предыдущее состояние из магазина NGXS - PullRequest
0 голосов
/ 21 декабря 2018

В NGXS у нас есть getState () для получения текущего состояния.Есть ли способ получить предыдущее состояние из магазина?Я ищу решение для этого, поскольку я должен реализовать функциональность Undo / Redo.Спасибо!

Ответы [ 3 ]

0 голосов
/ 27 декабря 2018

@ Марк Уитфилд прав, что прямого способа получить предыдущее состояние с помощью NGXS нет.Используя NGXS, у меня был сценарий использования, в котором я хотел узнать предыдущее значение для выполнения операции отмены стиля.

Я использовал обычный синтаксис NGXS @Selector для подключения к интересующему слайсу состояния, затемя подписался непосредственно на этот Observable и использовал оператор rxjs попарно , чтобы получить новое выданное значение и предыдущее значение.Сработало так, как я хотел использовать эти значения, чтобы они соответствовали тому, что вы хотите.

0 голосов
/ 20 марта 2019

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

export class MyComponent {

  private initialSnapshot: MyStoreStateModel;

  constructor(private store: Store){
    this.initialSnapshot = store.snapshot();
  }

  // ... component logic / state modification logic

  rollback = () => this.store.reset(this.initialSnapshot); 
}

Отрегулируйте в соответствии с вашими потребностями ...

Надеюсь, это немного поможет: -)

0 голосов
/ 22 декабря 2018

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

Возможно, вы бы использовали select и reset методы store.Смотрите здесь для получения дополнительной информации: https://ngxs.gitbook.io/ngxs/concepts/store#selecting-state

...