vue2升3不靠譜指南

1翠肘、Vue全局命令替換為app.XXX

為了能在一個(gè)頁(yè)面使用多個(gè)vue的實(shí)例灵迫,并且不相互污染书幕。原本的Vue.XXX都替換成app.XXX

20211106161340.png

2象迎、原本Vue上的實(shí)例方法變?yōu)殪o態(tài)導(dǎo)出香伴。

不再能直接Vue.nextTick(),而需要先從Vue當(dāng)中導(dǎo)出nextTick再使用慰枕。

為了支持Vue的tree-shake,這些沒(méi)有用到的方法不再會(huì)被webpack打包進(jìn)去瞒窒。減少體積捺僻。

// 原本
import Vue from 'vue'

Vue.nextTick(() => {
  // 一些和 DOM 有關(guān)的東西
})

// ---------------------------------------

// Vue3
import { nextTick } from 'vue'

nextTick(() => {
  // 一些和 DOM 有關(guān)的東西
})
受影響的API
Vue.nextTick
Vue.observable (用 Vue.reactive 替換)
Vue.version
Vue.compile (僅完整構(gòu)建版本)
Vue.set (僅兼容構(gòu)建版本)
Vue.delete (僅兼容構(gòu)建版本)

3、v-model語(yǔ)法修改

為了支持自定義組件可以有多個(gè)雙向綁定值

1崇裁、.sync的部分替換為v-model的新用法匕坯。

<ChildComponent :title.sync="pageTitle" />

<!-- 替換為 -->

<ChildComponent v-model:title="pageTitle" />

2、不帶參數(shù)的v-model,確保其子組件的prop和event替換成了modelValue和update:modelValue

// 組件
<ChildComponent v-model="pageTitle" />
// ChildComponent.vue

export default {
  props: {
    modelValue: String // 以前是`value:String`
  },
  emits: ['update:modelValue'],
  methods: {
    changePageTitle(title) {
      this.$emit('update:modelValue', title) // 以前是`this.$emit('input', title)`
    }
  }
}

4拔稳、v-if v-for在同一元素運(yùn)用時(shí)優(yōu)先級(jí)改變

2.x 版本中在一個(gè)元素上同時(shí)使用 v-if 和 v-for 時(shí)葛峻,v-for 會(huì)優(yōu)先作用

3.x 版本中 v-if 總是優(yōu)先于 v-for 生效。

(不要在同一元素上同時(shí)使用v-if v-for巴比,以避免歧義)

5术奖、v-bind="object" 現(xiàn)在排序敏感

原本直接寫的同名組件參數(shù)會(huì)更加優(yōu)先。

<!-- 模板 -->
<div id="red" v-bind="{ id: 'blue' }"></div>
<!-- 結(jié)果 -->
<div id="red"></div>

現(xiàn)在順序敏感

<!-- 模板 -->
<div id="red" v-bind="{ id: 'blue' }"></div>
<!-- 結(jié)果 -->
<div id="blue"></div>

<!-- 模板 -->
<div v-bind="{ id: 'blue' }" id="red"></div>
<!-- 結(jié)果 -->
<div id="red"></div>

(盡量不要同時(shí)存在兩種語(yǔ)法轻绞,如果必須采记,請(qǐng)注意順序)

6、 v-on的.native修飾符刪除

v-on 的 .native 修飾符已被移除政勃。同時(shí)唧龄,新增的 emits 選項(xiàng)允許子組件定義真正會(huì)被觸發(fā)的事件。

(刪除 .native 修飾符的所有實(shí)例奸远。
確保所有組件都使用 emits 選項(xiàng)記錄其事件既棺。)

7讽挟、只能使用普通函數(shù)創(chuàng)建函數(shù)式組件

8、異步組件寫法改變

9丸冕、組件事件現(xiàn)在需要在 emits 選項(xiàng)中聲明

Vue 3 現(xiàn)在提供一個(gè) emits 選項(xiàng)耽梅,和現(xiàn)有的 props 選項(xiàng)類似。這個(gè)選項(xiàng)可以用來(lái)定義一個(gè)組件可以向其父組件觸發(fā)的事件胖烛。

提供事件驗(yàn)證眼姐,處理原生事件的問(wèn)題(移除了.native修飾)

<template>
  <div>
    <p>{{ text }}</p>
    <button v-on:click="$emit('accepted')">OK</button>
  </div>
</template>
<script>
  export default {
    props: ['text'],
    emits: ['accepted']
  }
</script>

(如果沒(méi)寫, 組件上的事件接收函數(shù)會(huì)被出發(fā)兩次。一次來(lái)自Vue的事件洪己,一次來(lái)自原生事件)

10妥凳、生命周期更名

destroyed 生命周期選項(xiàng)被重命名為 unmounted
beforeDestroy 生命周期選項(xiàng)被重命名為 beforeUnmount

簡(jiǎn)要升級(jí)指南

  1. 檢查component、directive等全局變量答捕,替換成app實(shí)例方法。
  2. 檢查組件中使用了nextTick屑那、observable等方法拱镐。
  3. 檢查使用了v-model的組件,value和input事件替換持际。
  4. 檢查是否有同時(shí)在一個(gè)元素上使用了v-if和v-for沃琅。
  5. 檢查使用v-bind時(shí)是否同時(shí)又注入了屬性
  6. 檢查刪除.native修飾符。
  7. 檢查函數(shù)式組件是否正確蜘欲。
  8. 檢查異步組件的寫法是否正確益眉。
  9. 檢查每個(gè)組件的事件是否已經(jīng)在emits項(xiàng)中聲明。
  10. 檢查destroyed姥份、beforeDestroy生命周期名字是否變更郭脂。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市澈歉,隨后出現(xiàn)的幾起案子展鸡,更是在濱河造成了極大的恐慌,老刑警劉巖埃难,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件莹弊,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡涡尘,警方通過(guò)查閱死者的電腦和手機(jī)忍弛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)考抄,“玉大人细疚,你說(shuō)我怎么就攤上這事∽荆” “怎么了惠昔?”我有些...
    開(kāi)封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵幕与,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我镇防,道長(zhǎng)啦鸣,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任来氧,我火速辦了婚禮诫给,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘啦扬。我一直安慰自己中狂,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布扑毡。 她就那樣靜靜地躺著胃榕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瞄摊。 梳的紋絲不亂的頭發(fā)上勋又,一...
    開(kāi)封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音换帜,去河邊找鬼楔壤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛惯驼,可吹牛的內(nèi)容都是我干的蹲嚣。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼祟牲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼隙畜!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起疲眷,我...
    開(kāi)封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤禾蚕,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后狂丝,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體换淆,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年几颜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了倍试。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蛋哭,死狀恐怖县习,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤躁愿,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布叛本,位于F島的核電站,受9級(jí)特大地震影響彤钟,放射性物質(zhì)發(fā)生泄漏来候。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一逸雹、第九天 我趴在偏房一處隱蔽的房頂上張望营搅。 院中可真熱鬧,春花似錦梆砸、人聲如沸转质。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)休蟹。三九已至,卻和暖如春日矫,著一層夾襖步出監(jiān)牢的瞬間鸡挠,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工搬男, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人彭沼。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓缔逛,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親姓惑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子褐奴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

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