真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Vue.js3.0的新特性有哪些

這篇文章主要講解了“Vue.js 3.0的新特性有哪些”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Vue.js 3.0的新特性有哪些”吧!

創(chuàng)新互聯(lián)公司專注于企業(yè)網(wǎng)絡(luò)營銷推廣、網(wǎng)站重做改版、北安網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)商城系統(tǒng)網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為北安等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

1. 初始化項(xiàng)目

// ① npm i -g @vue/cli  // ② vue create my-project  // ③ npm install @vue/composition-api -S  // ④ main,js  import Vue from 'vue'  import VueCompositionApi from '@vue/composition-api'  Vue.use(VueCompositionApi)

2. setup方法

setup是vue3.x中新的操作組件屬性的方法,它是組件內(nèi)部暴露出所有的屬性和方法的統(tǒng)一API。

2.1 執(zhí)行時(shí)機(jī)

setup的執(zhí)行時(shí)機(jī)在:beforeCreate 之后 created之前

setup(props, ctx) {      console.log('setup')    },    beforeCreate() {      console.log('beforeCreate')    },    created() {      console.log('created')    },

2.2 接受props數(shù)據(jù)

  
// 通過 setup 函數(shù)的第一個(gè)形參,接收 props 數(shù)據(jù):  setup(props) {    console.log(props)  },  // 在 props 中定義當(dāng)前組件允許外界傳遞過來的參數(shù)名稱:  props: {      p1: String  }  /*  {}  p1: "傳值給 com-setup"  get p1: ƒ reactiveGetter()  set p1: ƒ reactiveSetter(newVal)  __proto__: Object  */

2.3 context

setup 函數(shù)的第二個(gè)形參是一個(gè)上下文對(duì)象,這個(gè)上下文對(duì)象中包含了一些有用的屬性,這些屬性在 vue 2.x 中需要通過 this 才能訪問到,在 vue 3.x 中,它們的訪問方式如下:

setup(props, ctx) {      console.log(ctx)      console.log(this) // undefined    },  /*  attrs: Object  emit: ƒ ()  listeners: Object  parent: VueComponent  refs: Object  root: Vue  ...  */

注意:在 setup() 函數(shù)中無法訪問到 this

3. reactive

reactive函數(shù)接收一個(gè)普通函數(shù),返回一個(gè)響應(yīng)式的數(shù)據(jù)對(duì)象。

reactive函數(shù)等價(jià)于 vue 2.x 中的 Vue.observable() 函數(shù),vue 3.x 中提供了 reactive() 函數(shù),用來創(chuàng)建響應(yīng)式的數(shù)據(jù)對(duì)象,基本代碼示例如下:

  

4. ref

ref() 函數(shù)用來根據(jù)給定的值創(chuàng)建一個(gè)響應(yīng)式的數(shù)據(jù)對(duì)象,ref() 函數(shù)調(diào)用的返回值是一個(gè)對(duì)象,這個(gè)對(duì)象上只包含一個(gè) .value 屬性:

  

4.1 在 reactive 對(duì)象中訪問 ref 創(chuàng)建的響應(yīng)式數(shù)據(jù)

當(dāng)把 ref() 創(chuàng)建出來的響應(yīng)式數(shù)據(jù)對(duì)象,掛載到 reactive() 上時(shí),會(huì)自動(dòng)把響應(yīng)式數(shù)據(jù)對(duì)象展開為原始的值,不需通過 .value 就可以直接被訪問,例如:

setup() {    const refrefCount = ref(0)    const state = reactive({refCount})    console.log(state.refCount) // 輸出 0    state.refCount++ // 此處不需要通過 .value 就能直接訪問原始值    console.log(refCount) // 輸出 1    return {      refCount    }  }

注意:新的 ref 會(huì)覆蓋舊的 ref,示例代碼如下:

setup() {    // 創(chuàng)建 ref 并掛載到 reactive 中    const c1 = ref(0);    const state = reactive({ c1 });    // 再次創(chuàng)建 ref,命名為 c2    const c2 = ref(9);    // 將 舊 ref c1 替換為 新 ref c2    state.c1 = c2;    state.c1++;   console.log(state.c1); // 輸出 10    console.log(c2.value); // 輸出 10    console.log(c1.value); // 輸出 0  }

5. isRef

isRef() 用來判斷某個(gè)值是否為 ref() 創(chuàng)建出來的對(duì)象;應(yīng)用場景:當(dāng)需要展開某個(gè)可能為 ref() 創(chuàng)建出來的值的時(shí)候,例如:

import { ref, reactive, isRef } from "@vue/composition-api";  export default {    setup() {      const unwrapped = isRef(foo) ? foo.value : foo    } };

6. toRefs

toRefs() 函數(shù)可以將 reactive() 創(chuàng)建出來的響應(yīng)式對(duì)象,轉(zhuǎn)換為普通的對(duì)象,只不過,這個(gè)對(duì)象上的每個(gè)屬性節(jié)點(diǎn),都是 ref() 類型的響應(yīng)式數(shù)據(jù)。

  

7. computed計(jì)算屬性

7.1 只讀的計(jì)算屬性

  

7.2 可讀可寫的計(jì)算屬性

  

8. watch

watch() 函數(shù)用來監(jiān)視某些數(shù)據(jù)項(xiàng)的變化,從而觸發(fā)某些特定的操作,使用之前需要按需導(dǎo)入:

import { watch } from '@vue/composition-api'

8.1 基本用法

  

8.2 監(jiān)視數(shù)據(jù)源

監(jiān)視 reactive 類型的數(shù)據(jù)源:

  

監(jiān)視 ref 類型的數(shù)據(jù)源:

export default {    setup() {      // 定義數(shù)據(jù)源      let count = ref(0);      // 指定要監(jiān)視的數(shù)據(jù)源      watch(count, (count, prevCount) => {        console.log(count, prevCount)      })      setInterval(() => {        count.value += 2      }, 2000)      console.log(count.value)      return {        count      }    }  };

8.3 監(jiān)聽多個(gè)數(shù)據(jù)源

監(jiān)視 reactive 類型的數(shù)據(jù)源:

export default {    setup() {      const state = reactive({count: 100, name: 'houfei'})      watch(        // 監(jiān)聽count name        [() => state.count, () => state.name],        // 如果變換 執(zhí)行以下函數(shù)        ([newCount, newName], [oldCount, oldName]) => {          console.log(newCount, oldCount)          console.log(newName, oldName)        },        { lazy: true} // 在 watch 被創(chuàng)建的時(shí)候,不執(zhí)行回調(diào)函數(shù)中的代碼      )      setTimeout(() => {        state.count += 2        state.name = 'qweqweewq'      }, 3000)      return state    }  };

監(jiān)視 ref 類型的數(shù)據(jù)源:

export default {    setup() {      // 定義數(shù)據(jù)源      const count = ref(10)      const name = ref('zs')      // 指定要監(jiān)視的數(shù)據(jù)源      watch(        [count, name],        ([newCount, newName], [oldCount, oldName]) => {          console.log(newCount, oldCount)          console.log(newName, oldName)        },        { lazy: true}     )      setInterval(() => {        count.value += 2     }, 2000)      console.log(count.value)      return {        count      }    }  };

8.4 清除監(jiān)視

在 setup() 函數(shù)內(nèi)創(chuàng)建的 watch 監(jiān)視,會(huì)在當(dāng)前組件被銷毀的時(shí)候自動(dòng)停止。如果想要明確地停止某個(gè)監(jiān)視,可以調(diào)用 watch() 函數(shù)的返回值即可,語法如下:

8.5 在watch中清除無效的異步任務(wù)

有時(shí)候,當(dāng)被 watch 監(jiān)視的值發(fā)生變化時(shí),或 watch 本身被 stop 之后,我們期望能夠清除那些無效的異步任務(wù),此時(shí),watch 回調(diào)函數(shù)中提供了一個(gè) cleanup registrator function 來執(zhí)行清除的工作。這個(gè)清除函數(shù)會(huì)在如下情況下被調(diào)用:

watch 被重復(fù)執(zhí)行了

watch 被強(qiáng)制 stop 了

Template 中的代碼示例如下:

Script 中的代碼示例如下:

9. provide & inject 組件傳值

provide() 和 inject() 可以實(shí)現(xiàn)嵌套組件之間的數(shù)據(jù)傳遞。這兩個(gè)函數(shù)只能在 setup() 函數(shù)中使用。父級(jí)組件中使用 provide() 函數(shù)向下傳遞數(shù)據(jù);子級(jí)組件中使用 inject() 獲取上層傳遞過來的數(shù)據(jù)。

9.1 共享普通數(shù)據(jù)

app.vue 根組件:

  

06.son.vue son 組件:

  

07.grandson.vue son 組件:

  

9.2 共享ref響應(yīng)式數(shù)據(jù)

app.vue 根組件:

  

06.son.vue son 組件:

  

07.grandson.vue son 組件:

template>    
      grandson 組件    
    

10. 節(jié)點(diǎn)的引用 template ref

10.1 dom的引用

  

10.2 組件的引用

App父組件:

  

06.son.vue子組件:

  

11 nextTick

  

感謝各位的閱讀,以上就是“Vue.js 3.0的新特性有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Vue.js 3.0的新特性有哪些這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!


網(wǎng)站欄目:Vue.js3.0的新特性有哪些
本文地址:http://weahome.cn/article/jghpjp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部