Décrivez le bogue
Les propriétés de slot ne se trouvent que dans l'élément slot, mais pas sur l'élément lui-même. Svelte permet d'utiliser la propriété sur l'élément, donc l'erreur est simplement un peu trompeuse. Peut-être n'a-t-il fait surface que comme erreur lors de l'utilisation de TypeScript avec des paramètres suffisamment stricts.
Reproduire
Créez un composant avec des propriétés de slot et utilisez la propriété sur l'élément déclarant la propriété (ici l'erreur sur l'utilisation de class
) :
<Component n={10}>
<div slot="item" let:zebra class={zebra}>Hello {zebra}</div>
</Component>
Comportement attendu
La propriété Slot est dans la portée et aucune erreur n'est générée.
Captures d'écran
Système (veuillez compléter les informations suivantes) :
Nous devons tirer la transformation jsx au niveau supérieur, entourant la balise. Ainsi, par exemple, dans ce test, il devrait devenir
<>{() => { let {thing:{ a }} = __sveltets_instanceOf(Component).$$slot_def['default'];<><Component>
<h1>Hello { a }</h1>
</Component></>}}</>
@dummdidumm Merci pour la correction
Je viens de tester ceci et si le let:prop
est après son utilisation, vous obtenez toujours un avertissement svelte au lieu d'une erreur de type :
'prop' n'est pas défini [svelte(missing-declaration)]
Exemple de capture d'écran :
Cependant, la sortie générée fonctionne quel que soit l'ordre. Bien sûr, je peux simplement réorganiser les attributs pour éliminer l'erreur comme solution de contournement.
Ceci est un bug du compilateur Svelte, j'ai créé https://github.com/sveltejs/svelte/issues/6009 pour cela.