Skip to content

Commit

Permalink
fix(compile-sfc): register props destructure rest id as setup bindings (
Browse files Browse the repository at this point in the history
  • Loading branch information
edison1105 committed May 8, 2024
1 parent 4619461 commit b2b5f57
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -304,3 +304,19 @@ return () => {}
}"
`;

exports[`sfc reactive props destructure > rest spread non-inline 1`] = `
"import { createPropsRestProxy as _createPropsRestProxy } from 'vue'
export default {
props: ['foo', 'bar'],
setup(__props, { expose: __expose }) {
__expose();
const rest = _createPropsRestProxy(__props, ["foo"])
return { rest }
}
}"
`;
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,27 @@ describe('sfc reactive props destructure', () => {
})
})

test('rest spread non-inline', () => {
const { content, bindings } = compile(
`
<script setup>
const { foo, ...rest } = defineProps(['foo', 'bar'])
</script>
<template>{{ rest.bar }}</template>
`,
{ inlineTemplate: false },
)
expect(content).toMatch(
`const rest = _createPropsRestProxy(__props, ["foo"])`,
)
assertCode(content)
expect(bindings).toStrictEqual({
foo: BindingTypes.PROPS,
bar: BindingTypes.PROPS,
rest: BindingTypes.SETUP_REACTIVE_CONST,
})
})

// #6960
test('computed static key', () => {
const { content, bindings } = compile(`
Expand Down
8 changes: 7 additions & 1 deletion packages/compiler-sfc/src/compileScript.ts
Original file line number Diff line number Diff line change
Expand Up @@ -523,8 +523,14 @@ export function compileScript(
)
}

// defineProps / defineEmits
// defineProps
const isDefineProps = processDefineProps(ctx, init, decl.id)
if (ctx.propsDestructureRestId) {
setupBindings[ctx.propsDestructureRestId] =
BindingTypes.SETUP_REACTIVE_CONST
}

// defineEmits
const isDefineEmits =
!isDefineProps && processDefineEmits(ctx, init, decl.id)
!isDefineEmits &&
Expand Down

0 comments on commit b2b5f57

Please sign in to comment.