日拱一卒-Vue中自定义组件如何实现v-model

前几天面试的时候被问到了这个问题,不会。
今天工做的时候恰好有需求要用到,研究了一下。面试

首先要明白,所谓的v-model其实是一个语法糖。this

<child v-model="value"></child>

等于code

<child :value="value" @input="someHandler"></child>

所以,咱们须要在子组件中,使用props来接收value,以及用this.$emit来传值出去。
在子组件中的写法是这样子的:get

// 这里props不推荐这种写法,只是demo使用
props: ["value"],
// 经过props拿到数据后,不要直接使用,而是要放在computed里面使用才是比较规范的写法
computed: {
    computedValue: {
        get(){
            return this.value;
        },
        set(value){
            this.$emit("input",value);
        }
    }
}
相关文章
相关标签/搜索