先保证数据源清晰
表单状态我会集中放在一个对象或一组 ref 里,不散落在各个子组件自己偷偷改。父组件能一眼看出「当前表单长什么样」。
自定义组件的 v-model
封装输入框时,我固定约定:对外还是 modelValue + update:modelValue。名称不标新立异,协作和以后自己维护都省事。
const props = defineProps({ modelValue: String })
const emit = defineEmits(['update:modelValue'])
function onInput(e) {
emit('update:modelValue', e.target.value)
}
数字输入框最容易把字符串和数字搞混。需要计算时,我会在提交前统一做一次转换,而不是在每个输入事件里又转又判。
表单v-model