diff --git a/.changeset/beige-rabbits-shave.md b/.changeset/beige-rabbits-shave.md new file mode 100644 index 000000000000..b63c13d06c0f --- /dev/null +++ b/.changeset/beige-rabbits-shave.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: improve props aliasing diff --git a/packages/svelte/src/compiler/phases/3-transform/client/utils.js b/packages/svelte/src/compiler/phases/3-transform/client/utils.js index a2956f5afc51..305dbcd543ac 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/utils.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/utils.js @@ -81,6 +81,9 @@ export function serialize_get_binding(node, state) { return b.call(node); } + if (binding.prop_alias) { + return b.member(b.id('$$props'), b.id(binding.prop_alias)); + } return b.member(b.id('$$props'), node); } diff --git a/packages/svelte/tests/runtime-runes/samples/props-alias/Counter.svelte b/packages/svelte/tests/runtime-runes/samples/props-alias/Counter.svelte new file mode 100644 index 000000000000..a0a4ebd14cbf --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/props-alias/Counter.svelte @@ -0,0 +1,5 @@ + + + diff --git a/packages/svelte/tests/runtime-runes/samples/props-alias/_config.js b/packages/svelte/tests/runtime-runes/samples/props-alias/_config.js new file mode 100644 index 000000000000..0fc80f0df5b7 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/props-alias/_config.js @@ -0,0 +1,32 @@ +import { test } from '../../test'; + +export default test({ + html: ` +

0 0 0 0

+ + + + + `, + + async test({ assert, target, component }) { + const [b1, b2, b3, b4] = target.querySelectorAll('button'); + + b1.click(); + b2.click(); + b3.click(); + b4.click(); + await Promise.resolve(); + + assert.htmlEqual( + target.innerHTML, + ` +

1 1 0 0

+ + + + + ` + ); + } +}); diff --git a/packages/svelte/tests/runtime-runes/samples/props-alias/main.svelte b/packages/svelte/tests/runtime-runes/samples/props-alias/main.svelte new file mode 100644 index 000000000000..c3908f72fa11 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/props-alias/main.svelte @@ -0,0 +1,15 @@ + + +

{bound} {bound_nested.count} {unbound} {unbound_nested.count}

+ + + + +