Vue3.0中setup函數的使用


參考:https://blog.csdn.net/qq_41328247/article/details/109286022

一、setup函數的特性以及作用

  可以確定的是 Vue3.0 是兼容 Vue2.x 版本的 也就是說我們再日常工作中 可以在 Vue3 中使用 Vue2.x 的相關語法 但是當你真正開始使用 Vue3 寫項目時 你會發現他比 Vue2.x 方便的多

  Vue3 的一大特性函數 ---- setup

  1、setup函數是處於 圍繞 beforeCreate 和 created 生命周期鈎子運行  也就說在 setup函數中是無法 使用 data 和 methods 中的數據和方法的

  2、setup函數是 Composition API(組合API)的入口

  3、在setup函數中定義的變量和方法最后都是需要 return 出去的 不然無法再模板中使用

二、setup函數的注意點:

  1、由於在執行 setup函數的時候,還沒有執行 Created 生命周期方法,所以在 setup 函數中,無法使用 data 和 methods 的變量和方法

  2、由於我們不能在 setup函數中使用 data 和 methods,所以 Vue 為了避免我們錯誤的使用,直接將 setup函數中的this修改成了 undefined

  3、setup函數只能是同步的不能是異步的

用法1:結合ref使用

<template>
<div id="app">
{{name}}
<p>{{age}}</p>
<button @click="plusOne()">+</button>
</div>
</template>

<script>
import {ref} from 'vue'
export default {
name:'app',
data(){
return {
name:'xiaosan'
}
},
setup(){
const name =ref('小四')
const age=ref(18)
function plusOne(){
age.value++ //想改變值或獲取值 必須.value
}
return { //必須返回 模板中才能使用
name,age,plusOne
}
}
}
</script>
用法2:代碼分割

Options API 和 Composition API 

Options API 約定:

我們需要在 props 里面設置接收參數

我們需要在 data 里面設置變量

我們需要在 computed 里面設置計算屬性

我們需要在 watch 里面設置監聽屬性

我們需要在 methods 里面設置事件方法

你會發現 Options APi 都約定了我們該在哪個位置做什么事,這反倒在一定程度上也強制我們進行了代碼分割。

現在用 Composition API,不再這么約定了,於是乎,代碼組織非常靈活,我們的控制代碼寫在 setup 里面即可。

setup函數提供了兩個參數 props和context,重要的是在setup函數里沒有了this,在 vue3.0 中,訪問他們變成以下形式: this.xxx=》context.xxx

我們沒有了 this 上下文,沒有了 Options API 的強制代碼分離。Composition API 給了我們更加廣闊的天地,那么我們更加需要慎重自約起來。

對於復雜的邏輯代碼,我們要更加重視起 Composition API 的初心,不要吝嗇使用 Composition API 來分離代碼,用來切割成各種模塊導出。

我們期望是這樣的:

importuseAfrom'./a';

importuseBfrom'./b';

importuseCfrom'./c';

exportdefault{

setup (props) {

let{ a, methodsA } = useA();

let{ b, methodsB } = useA();

let{ c, methodsC } = useC();

return{

a,

methodsA,

b,

methodsB,

c,

methodsC

}

}

}
就算 setup 內容代碼量越來越大,但是始終圍繞着大而不亂,代碼結構清晰的路子前進。

 

 

參考:https://www.cnblogs.com/luguankun/p/14208599.html

setup函數是用於定義變量和方法的

1.引入ref 和 reactive 模塊

import {ref, reactive} from 'vue'

ref 模塊是用來聲明簡單數據類型的,例如,string , number ,boolean 等

reactive 模塊是用來聲明復雜數據類型的,例如,數組,對象等

 

2.使用setup函數,並在函數內使用ref 聲明簡單數據類型 和 復雜數據類型

復制代碼
 
 setup(){
   let num = ref(0)  // ref 聲明簡單數據類型
   let arr = reactive([1,2,3])  // reactive 聲明復雜數據類型
   // 聲明方法
   let test = ()=>{
      return 111
   }
   // 返回數據
   return {
     num , arr ,test 
   }
 }
}

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM