Language-tools: 在插槽元素本身上找不到插槽道具

创建于 2021-02-14  ·  3评论  ·  资料来源: sveltejs/language-tools

描述错误
插槽属性仅在插槽元素中找到,而不是在元素本身上找到。 Svelte 允许在元素上使用该属性,因此该错误只是有点误导。 可能只有在使用具有足够严格设置的 TypeScript 时才会出现错误。

再现
创建一个具有插槽属性的组件,并在声明该属性的元素上使用该属性(这里是class用法中的错误):

<Component n={10}>
    <div slot="item" let:zebra class={zebra}>Hello {zebra}</div>
</Component>

[复制]

预期行为
Slot 属性在范围内,不会引发错误。

截图
image

系统(请填写以下信息):

  • 操作系统:Windows 10 64位
  • IDE:VSCode
  • 插件/包:适用于 VSCode 的 Svelte
Fixed bug

所有3条评论

我们需要在标签周围向上拉 jsx 转换。 所以例如在这个测试中它应该变成

<>{() => { let {thing:{ a }} = __sveltets_instanceOf(Component).$$slot_def['default'];<><Component>
    <h1>Hello { a }</h1>
</Component></>}}</>

@dummdidumm谢谢你的修复

我刚刚对此进行了测试,如果let:prop在使用之后,您仍然会收到一个细小的警告而不是类型错误:

'prop' 未定义 [svelte(missing-declaration)]

示例截图:

image

但是,无论顺序如何,生成的输出都可以工作。 当然,作为一种解决方法,我可以重新排序属性以消除错误。

这是一个 Svelte 编译器错误,我为此创建了https://github.com/sveltejs/svelte/issues/6009

此页面是否有帮助?
0 / 5 - 0 等级