-
-
Notifications
You must be signed in to change notification settings - Fork 4.6k
Closed as not planned
Closed as not planned
Copy link
Description
Describe the bug
Compiling the following component works as expected in SSR mode:
<script>
import Slider from './Slider.svelte';
const snippetToRender = snippetWithSlider;
let sliderValue = $state(0)
</script>
{#snippet snippetWithSlider()}
<Slider />
{/snippet}
compiles to
export default function App($$payload, $$props) {
$.push(false);
const snippetToRender = snippetWithSlider; // It works thanks to function hoisting
function snippetWithSlider($$payload) {
$$payload.out += `<!--[-->`;
Slider($$payload, {});
$$payload.out += `<!--]-->`;
}
$$payload.out += `<!--[-->`;
snippetToRender($$payload);
$$payload.out += `<!--]-->`;
$.pop();
}
But if I add a bind
prop:
<script>
import Slider from './Slider.svelte';
const snippetToRender = snippetWithSlider;
+ let sliderValue = $state(0)
</script>
{#snippet snippetWithSlider()}
- <Slider />
+ <Slider bind:value={sliderValue} />
{/snippet}
{@render snippetToRender()}
compiles to a code that has a bug with `snippetWithSlider` scope
export default function App($$payload, $$props) {
$.push(true);
const snippetToRender = snippetWithSlider; // Not in scope
let sliderValue = 0;
let $$settled = true;
let $$inner_payload;
function $$render_inner($$payload) {
function snippetWithSlider($$payload) {
$$payload.out += `<!--[-->`;
Slider($$payload, {
get value() {
return sliderValue;
},
set value($$value) {
sliderValue = $$value;
$$settled = false;
}
});
$$payload.out += `<!--]-->`;
}
// etc.
Reproduction
Logs
No response
System Info
Repl
Severity
annoyance
Metadata
Metadata
Assignees
Labels
No labels