Какова механика синтаксиса типа, используемого в действиях? - PullRequest
0 голосов
/ 25 марта 2020

Я изучал NGXS в течение последних 2 дней, и мне трудно понять, что именно происходит в примерах, подобных этому

//snippet from the actions chapter
export class FeedAnimals {
  static readonly type = '[Zoo] Feed Animals';
}

//snippet from the state chapter
export class FeedAnimals {
  static readonly type = '[Zoo] FeedAnimals';
}

Тот факт, что [Zoo] находится внутри [] говорит мне, что он явно нацелен на состояние Zoo, но части Feed Animals и FeedAnimals сбивают меня с толку, потому что я не вижу, как, почему или если они отличаются друг от друга. Они оба имеют смысл с точки зрения того, как мы обычно обращаемся к вещам, но тот факт, что в первом есть 3 вещи, а во 2 только 2, заставляет меня задуматься, есть ли какой-то основной порядок, которому мы должны следовать, или все, что следует после [] автоматически в любом случае автоматически объединяется в одну строку, что означает, что с обоими экземплярами передаются только две вещи.

Я узнал о создании нашего собственного types в машинописном тексте, но в основном использовал интерфейсы и классы, поэтому В моем нынешнем понимании создания единственного типа я действительно не имею ни малейшего представления о том, что делается с помощью этого, потому что я видел только примеры пользовательских типов, применяющих пользовательские интерфейсы или примитивный тип. Документация также начинается с рассказа обо всех этих классных вещах, которые вы можете сделать с / с вашим состоянием с помощью действий, затем дублирует их и кратко показывает нам, как выглядит состояние, затем возвращается к действиям и селекторам, которые заставили меня лично остановиться и повторить. -Сортировать все, что я изучал, чтобы это имело смысл. Каждый пример, с которым я сталкиваюсь, предполагает, что пользователь уже понимает, что делается, и не говорит об этом. Что это делает и в чем эти вещи передаются?

1 Ответ

1 голос
/ 26 марта 2020

Это не так сложно, как вы ожидаете ..

type для каждого действия просто должно быть уникальной строкой, чтобы NGXS мог выяснить, какие состояния и потоки действий должны отвечать когда действие отправлено.

Синтаксис [Zoo] Feed Animals - это просто соглашение - вы можете комментировать свои Действия любым подходящим вам шаблоном, если каждый из них уникален. Вам не нужно указывать [..] в качестве префикса.

Например, в моем текущем проекте мы обычно предваряем действие контекстом, из которого мы его отправляем, например [Left Panel] Select Farm или [Map] Select Farm. Так разные действия, но название четко указывает, где они возникли.

Это облегчает разработчикам трассировку в инструменте регистрации / редукции NGXS, поскольку мы можем видеть, откуда было отправлено действие.

Префикс [Zoo] .. здесь не так полезен ( мне), поскольку действие может воздействовать на несколько состояний, а не просто на целевое (это нормально для простого демонстрационного приложения, конечно).

...