fix(compiler-core): generate TS-cast safe assignment code for v-model
fix #4655
This commit is contained in:
@@ -924,17 +924,17 @@ export default {
|
||||
return (_ctx, _cache) => {
|
||||
return (_openBlock(), _createElementBlock(_Fragment, null, [
|
||||
_withDirectives(_createElementVNode(\\"input\\", {
|
||||
\\"onUpdate:modelValue\\": _cache[0] || (_cache[0] = $event => (count.value = $event))
|
||||
\\"onUpdate:modelValue\\": _cache[0] || (_cache[0] = $event => ((count).value = $event))
|
||||
}, null, 512 /* NEED_PATCH */), [
|
||||
[_vModelText, count.value]
|
||||
]),
|
||||
_withDirectives(_createElementVNode(\\"input\\", {
|
||||
\\"onUpdate:modelValue\\": _cache[1] || (_cache[1] = $event => (_isRef(maybe) ? maybe.value = $event : null))
|
||||
\\"onUpdate:modelValue\\": _cache[1] || (_cache[1] = $event => (_isRef(maybe) ? (maybe).value = $event : null))
|
||||
}, null, 512 /* NEED_PATCH */), [
|
||||
[_vModelText, _unref(maybe)]
|
||||
]),
|
||||
_withDirectives(_createElementVNode(\\"input\\", {
|
||||
\\"onUpdate:modelValue\\": _cache[2] || (_cache[2] = $event => (_isRef(lett) ? lett.value = $event : lett = $event))
|
||||
\\"onUpdate:modelValue\\": _cache[2] || (_cache[2] = $event => (_isRef(lett) ? (lett).value = $event : lett = $event))
|
||||
}, null, 512 /* NEED_PATCH */), [
|
||||
[_vModelText, _unref(lett)]
|
||||
])
|
||||
|
||||
@@ -523,13 +523,12 @@ defineExpose({ foo: 123 })
|
||||
{ inlineTemplate: true }
|
||||
)
|
||||
// known const ref: set value
|
||||
expect(content).toMatch(`count.value = $event`)
|
||||
// const but maybe ref: also assign .value directly since non-ref
|
||||
// won't work
|
||||
expect(content).toMatch(`maybe.value = $event`)
|
||||
expect(content).toMatch(`(count).value = $event`)
|
||||
// const but maybe ref: assign if ref, otherwise do nothing
|
||||
expect(content).toMatch(`_isRef(maybe) ? (maybe).value = $event : null`)
|
||||
// let: handle both cases
|
||||
expect(content).toMatch(
|
||||
`_isRef(lett) ? lett.value = $event : lett = $event`
|
||||
`_isRef(lett) ? (lett).value = $event : lett = $event`
|
||||
)
|
||||
assertCode(content)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user