sveltejs - 组件的静态属性

ric*_*ckb 6 javascript static-methods svelte-3

我有一个场景,我需要向组件类提供信息,以便下游实例化可以使用该信息。

例如:

import { AComponent } from 'AComponent.svelte'
...
AComponent.classInfo = {something: somedata}
Run Code Online (Sandbox Code Playgroud)

然后,该组件可以访问该信息,如下所示:

<script>
  let something = AComponent.classInfo.something
</script>
Run Code Online (Sandbox Code Playgroud)

似乎在 V2 中提供此类功能(我正在使用 3)方面做出了一些努力,这些问题已在这些问题中进​​行了讨论:支持组件静态方法 #480,这导致添加了可以提供静态方法/属性的设置功能。第572

然而,扫描当前文档发现没有这样的设置方法。那么,这是否从 V2 到 3 都存在?如果没有,是否有办法做到这一点?

Ste*_*aes 7

您可以在模块脚本块中定义不特定于实例的静态属性

<script context="module">
  export const someValue = 123
</script>
<script>
  // Normal component stuff
</script>
Run Code Online (Sandbox Code Playgroud)

然后直接从组件文件中导入:

import { someValue } from './MyComponent.svelte'
Run Code Online (Sandbox Code Playgroud)

请注意,这是该组件的所有实例之间共享的值。

  • 就我而言,上面的示例中缺少分号破坏了 linting,因此我需要添加它才能使其正常工作。 (2认同)

Jér*_*e B 1

至少在 v3.32 版本中,无法在 Svelte 组件中定义静态属性。只能进行命名导出。

我知道的唯一解决方法是使用自定义 webpack 加载器/汇总插件,并且实现从来都不是很漂亮。