mirror of https://github.com/vuejs/core.git
fix(sfc): ensure consistent dev/prod behavior for non-reactive variables declared in `<script setup>`
fix #5655
This commit is contained in:
parent
f73925d76a
commit
5a3d45ae29
|
@ -1280,7 +1280,7 @@ export default {
|
||||||
function c() {}
|
function c() {}
|
||||||
class d {}
|
class d {}
|
||||||
|
|
||||||
return { aa, bb, cc, dd, a, b, c, d, xx, x }
|
return { get aa() { return aa }, bb, cc, dd, get a() { return a }, b, c, d, xx, x }
|
||||||
}
|
}
|
||||||
|
|
||||||
}"
|
}"
|
||||||
|
|
|
@ -15,7 +15,7 @@ export default {
|
||||||
let c = () => {}
|
let c = () => {}
|
||||||
let d
|
let d
|
||||||
|
|
||||||
return { foo, a, b, c, d, ref, shallowRef }
|
return { foo, a, b, get c() { return c }, get d() { return d }, ref, shallowRef }
|
||||||
}
|
}
|
||||||
|
|
||||||
}"
|
}"
|
||||||
|
@ -36,7 +36,7 @@ export default {
|
||||||
let c = () => {}
|
let c = () => {}
|
||||||
let d
|
let d
|
||||||
|
|
||||||
return { foo, a, b, c, d }
|
return { foo, a, b, get c() { return c }, get d() { return d } }
|
||||||
}
|
}
|
||||||
|
|
||||||
}"
|
}"
|
||||||
|
|
|
@ -84,7 +84,7 @@ _useCssVars(_ctx => ({
|
||||||
let b = 200
|
let b = 200
|
||||||
let foo = 300
|
let foo = 300
|
||||||
|
|
||||||
return { a, b, foo }
|
return { get a() { return a }, get b() { return b }, get foo() { return foo } }
|
||||||
}
|
}
|
||||||
|
|
||||||
}"
|
}"
|
||||||
|
|
|
@ -20,7 +20,9 @@ describe('SFC compile <script setup>', () => {
|
||||||
class dd {}
|
class dd {}
|
||||||
</script>
|
</script>
|
||||||
`)
|
`)
|
||||||
expect(content).toMatch('return { aa, bb, cc, dd, a, b, c, d, xx, x }')
|
expect(content).toMatch(
|
||||||
|
'return { get aa() { return aa }, bb, cc, dd, get a() { return a }, b, c, d, xx, x }'
|
||||||
|
)
|
||||||
expect(bindings).toStrictEqual({
|
expect(bindings).toStrictEqual({
|
||||||
x: BindingTypes.SETUP_MAYBE_REF,
|
x: BindingTypes.SETUP_MAYBE_REF,
|
||||||
a: BindingTypes.SETUP_LET,
|
a: BindingTypes.SETUP_LET,
|
||||||
|
|
|
@ -32,7 +32,9 @@ describe('sfc ref transform', () => {
|
||||||
// normal declarations left untouched
|
// normal declarations left untouched
|
||||||
expect(content).toMatch(`let c = () => {}`)
|
expect(content).toMatch(`let c = () => {}`)
|
||||||
expect(content).toMatch(`let d`)
|
expect(content).toMatch(`let d`)
|
||||||
expect(content).toMatch(`return { foo, a, b, c, d, ref, shallowRef }`)
|
expect(content).toMatch(
|
||||||
|
`return { foo, a, b, get c() { return c }, get d() { return d }, ref, shallowRef }`
|
||||||
|
)
|
||||||
assertCode(content)
|
assertCode(content)
|
||||||
expect(bindings).toStrictEqual({
|
expect(bindings).toStrictEqual({
|
||||||
foo: BindingTypes.SETUP_REF,
|
foo: BindingTypes.SETUP_REF,
|
||||||
|
|
|
@ -1484,7 +1484,15 @@ export function compileScript(
|
||||||
allBindings[key] = true
|
allBindings[key] = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
returned = `{ ${Object.keys(allBindings).join(', ')} }`
|
returned = `{ `
|
||||||
|
for (const key in allBindings) {
|
||||||
|
if (bindingMetadata[key] === BindingTypes.SETUP_LET) {
|
||||||
|
returned += `get ${key}() { return ${key} }, `
|
||||||
|
} else {
|
||||||
|
returned += `${key}, `
|
||||||
|
}
|
||||||
|
}
|
||||||
|
returned = returned.replace(/, $/, '') + ` }`
|
||||||
} else {
|
} else {
|
||||||
// inline mode
|
// inline mode
|
||||||
if (sfc.template && !sfc.template.src) {
|
if (sfc.template && !sfc.template.src) {
|
||||||
|
|
Loading…
Reference in New Issue