Очистить часть государства - PullRequest
0 голосов
/ 19 января 2019

Я немного сомневаюсь в решении, которое мне пришло для очистки части штата.

У меня есть страница под названием "Книги", где я получаю множество книг. Каждый объект книги содержит очень минимальную информацию, необходимую для этой страницы. Когда пользователь нажимает на книгу, они перенаправляются на одну страницу книги, где я получаю полную информацию о книге.

Мое состояние выглядит так:

@State<any>({
  name: 'books',
  defaults: {
    books: [],
    selectedBook: null
  }
})

Когда пользователь уходит со страницы одной книги, я хотел бы очистить selectedBook, потому что это странно (по крайней мере, мне) находиться в других частях приложения и все еще иметь selectedBook укладку вокруг.

Мне было интересно, как этого добиться, и лучшее решение, которое я мог найти, - это отправить действие ClearSelectedBook от охранника CanDeactivate на маршруте books/:id.

Вот демоверсия о StackBlitz .

Это правильный подход, и если нет, то какие еще есть альтернативы?

1 Ответ

0 голосов
/ 21 января 2019

Не уверен, что есть правильный способ, но альтернативой является использование NGXS Router Plugin

Состояние может обрабатывать действие RouterNavigation, ипосмотрите на полезную нагрузку действия - если она отошла от одной страницы книги, затем очистите значение selectedBook в состоянии.

Сказав это, ваш подход к использованию действия-экспликации имеет свои преимущества (imho) - Я мог бы переименовать его, хотя, возможно, в UserLeftBookPage .. тогда государство ответит на это.Вместо имени действия, указывающего ответ.Написание тестов также немного проще с действием explict, чем с подключением к маршрутизатору.

...