Vue 3 把 v-model 拆成 modelValue 属性和 update:modelValue 事件两件事,组件里声明这两个就够了。props 不能直接改,改值必须 emit 出去。
要自定义参数名就写 v-model:title,组件里对应接收 title 并抛 update:title。
需要在赋值时做一层校验或转换,用 computed 的 get/set 做代理最干净。
Vue 2 那套 value 加 input 的写法在 Vue 3 已经失效。
<!-- 父组件 -->
<MyInput v-model="text" v-model:title="t" />
// 子组件
const props = defineProps({ modelValue: String, title: String })
const emit = defineEmits(['update:modelValue', 'update:title'])
const inner = computed({
get: () => props.modelValue,
set: v => emit('update:modelValue', v)
})
THE END






暂无评论内容