动作中使用的类型语法的机制是什么?

What are the mechanics of the type syntax used in the actions?

过去 2 天我一直在研究 NGXS,我很难理解在这样的例子中到底发生了什么

//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 AnimalsFeedAnimals 部分令人困惑我,因为我看不出它们如何、为什么或是否彼此不同。就我们通常如何访问事物而言,它们都有意义,但事实上第一个有 3 个东西,第二个只有 2 个,这让我想知道是否有一些我们需要遵循的基本顺序,或者在[] 无论如何都会自动混合成一个字符串,这意味着两个实例都只传递了 2 个东西。

我学会了在打字稿中制作我们自己的自定义 types 但主要使用接口和 类 所以根据我目前对创建单一类型的理解,我真的不知道正在做什么这样做是因为我只看到了应用自定义接口或原始类型的自定义类型的示例。该文档还开始谈论您可以做的所有这些很酷的事情 to/with 通过操作您的状态然后翻倍并简要地向我们展示状态的样子然后跳回到操作和选择器这让我个人不得不停止重新整理我正在学习的所有内容,使其具有一定的意义。我遇到的每一个例子似乎都假设用户已经理解正在做什么并且没有谈论它。这是做什么用的,传入的这些东西是什么?

它并不像您预期​​的那么复杂..

每个动作的 type 只需要是一个唯一的字符串,这样 NGXS 就可以确定在调度动作时哪些状态和动作流需要响应。

[Zoo] Feed Animals 语法只是约定俗成 - 您可以使用适合您的任何模式来注释您的 Action,只要每个模式都是唯一的即可。您不必将 [..] 作为前缀。

例如,在我当前的项目中,我们通常在操作前加上我们发送它的上下文,例如 [Left Panel] Select Farm[Map] Select Farm。如此不同的动作,但名称清楚地表明了它们的起源。

这使得开发人员可以更轻松地在 NGXS 记录器/Redux 工具中进行跟踪,因为我们可以看到从何处调度操作。

此处的 [Zoo] .. 前缀(对我而言)没那么有用,因为一个动作可能会影响多个状态,而不仅仅是针对一个状态(当然对于一个简单的演示应用程序来说没问题)。