1. 程式人生 > 其它 >vue2和vue3的基礎用法對比第四篇

vue2和vue3的基礎用法對比第四篇

元件中的使用——常用屬性、方法等的對比

(1) 生命週期(2) 變數的定義與使用(3) 方法的定義與使用(4)父子元件間的資料互動(5) computed計算屬性和watch的使用

元件中常用的東西無非上面5種,其中(4)、(5)在下一篇文章中介紹

vue3中最大的變化莫過於vue元件內部的編寫了。之前的是data、methods、computed、生命週期等每一個功能都是相對獨立的模組,但是vue3中所有的東西都被包含setup函式裡,編寫的方式發生了翻天覆地的變化。

(1) 生命週期

說到setup()setup這個函式是在資料建立之前,也就是說在原本的created生命週期之前。因此在setup裡面就不能用之前的生命週期了,所有vue3出了新的寫法。

setup裡面沒有 beforeCreate 和 created 因為其本身就代替這兩個函式  

important { defineComponent,onBeforeMount,onMouted,onBeforeUpdate,onUpdated,onBeforeUnmount,onUnmouted} from

export default defineComponent({   name:"lifecycle",

  setup(){

    // 對應 beforeMount 掛載前

    onBeforeMount(() => { 程式碼})

    // 對應 mounted掛載後

    onMouted(() => { 程式碼})

    // 對應 beforeUpdate 更新前

    onBeforeUpdate(() => { 程式碼})

    //對應updated更新後

    onUpdated(() => { 程式碼 })

    //對應beforeDestroy銷燬前

    onBerforeUnmount(() => { 程式碼 })

    // 對應 destroyed銷燬後

    onUnmouted(() => { 程式碼})

  }

})

(2) 變數的定義與使用

vue2.0版本是在data定義的當前元件的全域性變數,但是vue3.0中沒有規定要在哪裡寫了,只要寫在最後的return

就好了

setup(){
  const a=1,b=2
   //如此就定義了一個的當前元件的全域性變數
  return{a,b} 
}

但是上面寫的只是普通的變數,vue2.0中在data寫的變數還有最重要的功能就是都是響應式變數,那麼在vue3改怎麼定義響應式的變數呢?

vue3中又兩種方式,一種是ref,另外一種是reactive。一般來說ref是用來定義基本型別的,reactive是用來定義引用型別的,當然用ref來定義引用型別也了可以他會自動轉化reactive來定義。

注意:用ref定義的變數在使用時要加.value變數名.value

important {defineComponent,ref,reactive} from

export default defineComponent({   name:"variable",   setup(){       //ref的用法     const a = ref(1)     a.value //獲取a的值     const arr = ref([1,2,3])     arr.value[0] //獲取arr的第一個值     //reactive的用     const b = reactive({       x:1,       y:2     })     b.x //獲取b的x     return{a,arr,b}   } })  

(3)方法的定義與使用

在vue2.0中方法都寫在methods中,而在vue3沒有這樣的要求,它和變數的定義有點像,都只需要在最後的return中寫上就好了

important {defineComponent } from

export default defineComponent(){

  setup(){

    //第一種方式

    const example = ()=>{

      fn() //呼叫fn

    }

    example() //呼叫example

    // 第二種方式

    function fn(){

      //呼叫example

    }

    fn() //呼叫fn

    return {

       example,

       fn

    }

  }

}

以前變數和方法的定義是分散的,現在變成這樣的話就可以把方法用到的變數和方法寫在一起了,變成了一個整體的模組