(十二)Vue3.x中重寫的v-model

這一章我們將隆重介紹到的是Vue3.x被重寫的指令v-model

前言:由于在Vue2.x中,我們使用的v-model只能雙向綁定一個值,在某些需求面前顯的力不從心。但是在Vue3.x中已經(jīng)可以實現(xiàn)啦!
1、概述:數(shù)據(jù)雙向綁定
2、回顧:在Vue2.x中,v-model進行數(shù)據(jù)雙向綁定(語法糖)的原理

<my-components v-model="msg"></my-components>
// 等價于
<my-components :value="msg" @input="value=$event"></my-components>

// myComponents組件中接收綁定數(shù)據(jù)和觸發(fā)數(shù)據(jù)改變
props: { msg: String }; // 獲取數(shù)據(jù)
this.$emit("input", 'newVal'); // 觸發(fā)事件并傳值

且在Vue2.x中不能夠綁定多個v-model
3、用例:Vue3.x重寫了v-model的實現(xiàn)方式,以適用用綁定多個v-model
①:單個數(shù)據(jù)實現(xiàn)數(shù)據(jù)雙向綁定

<my-components v-model="msg"></my-components>
// 等價于
<my-components :modelValue="msg" @update:modelValue="value=$event"></my-components>

// myComponents組件中接收綁定數(shù)據(jù)和觸發(fā)數(shù)據(jù)改變
props: { modelValue: String }; // 獲取數(shù)據(jù)
setup(props, { emit }) {
    emit('update:modelValue', 'newValue'); // 觸發(fā)事件并傳值
};

②:多個數(shù)據(jù)實現(xiàn)數(shù)據(jù)雙向綁定

<my-components v-model:msg="msg" v-model:name="name"></my-components>
// 等價于
<my-components :msg="msg" @update:msg="value=$event" :name="name" @update:name="name=$event"></my-components>

// myComponents組件中接收綁定數(shù)據(jù)和觸發(fā)數(shù)據(jù)改變
props: { msg: String, name: String }; // 獲取數(shù)據(jù)
setup(props, { emit }) {
    emit('update:msg', 'newValue'); // 觸發(fā)事件并傳值
    emit('update:name', 'newValue'); // 觸發(fā)事件并傳值
};

下一章:(十三)Vue3.x中的emits選項
上一章:(十一)template和ref獲取元素或組件實例

ps:看清現(xiàn)實!人在生前是平等的,人在死后亦是平等,唯獨人在出生后就不平等了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容