vue3使用 v-model和 :model-value 的区别:
在 Vue 3 中, `v-model` 和 `:model-value` 都用于实现双向数据绑定,但有一些细微差别:
1>. **语法**
- `v-model` 是一个语法糖,相当于 `:value="valueFromParent" @input="valueFromParent = $event"`
- `:model-value` 和 `@update:modelValue` 分别用于显式设置组件的 value 属性和更新事件
2>. **自定义修饰符**
- `v-model` 支持 `.trim`、`.number` 等修饰符,可以对绑定值进行转换
- `:model-value` 不支持修饰符,如需转换需自行处理
3>. **默认 Prop 名称**
- 使用 `v-model` 时,默认会匹配名为 `modelValue` 的 prop 和 `update:modelValue` 事件
- 使用 `:model-value` 时,直接使用提供的 prop 和事件名称
4>. **语义**
- `v-model` 语义上表达了"双向绑定",易于理解
- `:model-value` 语义更加明确,分离了传入值和更新事件
总的来说,`v-model` 是一个更简洁的语法,适用于大多数场景。而 `:model-value` 则更灵活,可以自定义 prop 和事件名称,因此在一些特殊情况下更有用,如果需要与 Vue 2 的 `v-model` 行为保持一致也可以使用它。
