mirror of https://github.com/sveltejs/svelte
fix $$props reactivity in fallback of a slot (#5375)
parent
b1c67a16c6
commit
51e2626f42
@ -1,9 +1,11 @@
|
||||
import { Var } from '../../../../interfaces';
|
||||
import { is_reserved_keyword } from '../../../utils/reserved_keywords';
|
||||
|
||||
export default function is_dynamic(variable: Var) {
|
||||
if (variable) {
|
||||
if (variable.mutated || variable.reassigned) return true; // dynamic internal state
|
||||
if (!variable.module && variable.writable && variable.export_name) return true; // writable props
|
||||
if (is_reserved_keyword(variable.name)) return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -0,0 +1 @@
|
||||
<slot />
|
@ -0,0 +1,9 @@
|
||||
<script>
|
||||
import Foo from './Foo.svelte';
|
||||
</script>
|
||||
|
||||
<Foo>
|
||||
<slot>
|
||||
{JSON.stringify($$props)}
|
||||
</slot>
|
||||
</Foo>
|
@ -0,0 +1,18 @@
|
||||
// $$props reactivity in slot fallback
|
||||
export default {
|
||||
html: `
|
||||
<input>
|
||||
{"value":""}
|
||||
`,
|
||||
|
||||
async test({ assert, target, window }) {
|
||||
const input = target.querySelector("input");
|
||||
input.value = "abc";
|
||||
await input.dispatchEvent(new window.Event('input'));
|
||||
|
||||
assert.htmlEqual(target.innerHTML, `
|
||||
<input>
|
||||
{"value":"abc"}
|
||||
`);
|
||||
}
|
||||
};
|
@ -0,0 +1,8 @@
|
||||
<script>
|
||||
import Inner from "./Inner.svelte";
|
||||
let value = '';
|
||||
</script>
|
||||
|
||||
<input bind:value />
|
||||
|
||||
<Inner {value} />
|
Loading…
Reference in new issue