組件上的v-model依疼、model與sync(包括vue2痰腮、vue3的區(qū)別)

首先它們都是來表示雙向綁定一個(gè)props值的,我們用這三種寫法來演示同一功能律罢,表現(xiàn)一模一樣

用sync

1膀值、父組件中對(duì)需要雙向綁定的props用sync修飾符;
2误辑、子組件觸發(fā)update:props的名字沧踏;
3、把props的名字由money改成value完全不受影響巾钉;但是觸發(fā)的事件必須是update:props的名字這種形式翘狱!

//父組件
<X :money.sync="num"></X> //區(qū)別點(diǎn)
 data() {
    return {
      num: 500
    };
  },
//子組件
<template>
  <div>
    <div class="xx">余額:{{ money }}</div> <!--區(qū)別點(diǎn)-->
    <button @click="changeMoney(100)">存100</button>
    <button @click="changeMoney(-100)">取100</button>
  </div>
</template>

<script>
export default {
  props: {
    money: { //區(qū)別點(diǎn)
      type: Number
    }
  },
  methods: {
    changeMoney(data) {
      this.$emit("update:money", this.money + data); //區(qū)別點(diǎn)
    }
  }
};
</script>

用v-model

1、父組件用v-model砰苍;
2潦匈、子組件需要觸發(fā)input事件阱高;
3、props的名字必須是value茬缩,且觸發(fā)的事件必須是input赤惊,換成其他的達(dá)咩~

//父組件
<X v-model="num"></X> <!--區(qū)別點(diǎn)-->
 data() {
    return {
      num: 500
    };
  },
<template>
  <div>
    <div class="xx">余額:{{ value }}</div>  //區(qū)別點(diǎn)
    <button @click="changeMoney(100)">存100</button>
    <button @click="changeMoney(-100)">取100</button>
  </div>
</template>

<script>
export default {
  props: {
    value: { //區(qū)別點(diǎn)
      type: Number
    }
  },
  methods: {
    changeMoney(data) {
      this.$emit('input', this.value + data)  //區(qū)別點(diǎn)
    }
  }
};
</script>

子組件中用model

1、它算是v-model的升級(jí)版凰锡;
2未舟、父組件還是用v-model
3掂为、子組件中添加model屬性裕膀,里面指定prop和event的名字;
4勇哗、注意啦昼扛!用了model,雖然父組件上還是v-model智绸,但是props和event的名字就不用固定是value和input了野揪,你完全可以自定義它們兩個(gè)的名字了!

//父組件
<X v-model="num"></X> 
 data() {
    return {
      num: 500
    };
  },
<template>
  <div>
    <div class="xx">余額:{{ money }}</div>
    <button @click="changeMoney(100)">存100</button>
    <button @click="changeMoney(-100)">取100</button>
  </div>
</template>

<script>
export default {
    model: {  //區(qū)別點(diǎn)
        prop: 'money',
        event: 'emit-money'
    },
  props: {
    money: {
      type: Number
    }
  },
  methods: {
    changeMoney(data) {
      this.$emit("emit-money", this.money + data);  //區(qū)別點(diǎn)
    }
  }
};
</script>

總結(jié)

  • 看到這里你應(yīng)該就明白了瞧栗,單獨(dú)只用v-model斯稳,它的限制條件是最苛刻的,props的名字必須是value迹恐,觸發(fā)的event事件必須是input挣惰;
  • 所以model屬性就出來了,雖然父組件還是需要用v-model殴边,但是它的props和event就不用固定為value和input啦~~~
  • 這時(shí)來看憎茂,不管是用法還是命名上還是sync修飾符比較好用一些,它只需要在子組件觸發(fā)的事件是update:props的名字這種形式即可锤岸;
  • 在input框竖幔、復(fù)選框、單選框這些內(nèi)容上可以優(yōu)先選擇v-modelmodel是偷;
image.png

2.x與3.x中組件上v-model的不同

  • 文檔:2.x與3.x中組件上v-model的不同
  • vue2中v-model默認(rèn)的prop是value拳氢,觸發(fā)事件event是input;但是在vue3中蛋铆,用于自定義組件上的v-model默認(rèn)的prop改成了modelValue馋评,觸發(fā)事件改成了update:modelValue;
  • vue3中廢除了sync刺啦;
    vue2-v-model.png
vue3-v-model.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末留特,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蜕青,老刑警劉巖苟蹈,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異右核,居然都是意外死亡汉操,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門蒙兰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人芒篷,你說我怎么就攤上這事搜变。” “怎么了针炉?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵挠他,是天一觀的道長。 經(jīng)常有香客問我篡帕,道長殖侵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任镰烧,我火速辦了婚禮拢军,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘怔鳖。我一直安慰自己茉唉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布结执。 她就那樣靜靜地躺著度陆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪献幔。 梳的紋絲不亂的頭發(fā)上懂傀,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音蜡感,去河邊找鬼蹬蚁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛铸敏,可吹牛的內(nèi)容都是我干的缚忧。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼杈笔,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼闪水!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤球榆,失蹤者是張志新(化名)和其女友劉穎朽肥,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體持钉,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡衡招,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了每强。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片始腾。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖空执,靈堂內(nèi)的尸體忽然破棺而出浪箭,到底是詐尸還是另有隱情,我是刑警寧澤辨绊,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布奶栖,位于F島的核電站,受9級(jí)特大地震影響门坷,放射性物質(zhì)發(fā)生泄漏宣鄙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一默蚌、第九天 我趴在偏房一處隱蔽的房頂上張望冻晤。 院中可真熱鬧,春花似錦敏簿、人聲如沸明也。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽温数。三九已至,卻和暖如春蜻势,著一層夾襖步出監(jiān)牢的瞬間撑刺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來泰國打工握玛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留够傍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓挠铲,卻偏偏與公主長得像冕屯,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拂苹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容