亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一文詳解Vue3中的setup函數的用法和原理

 更新時間:2024年02月20日 08:37:09   作者:小饅頭學python  
在 Vue3 中,setup 函數是一個新引入的概念,它代替了之前版本中的 data、computed、methods 等選項,用于設置組件的初始狀態(tài)和邏輯,本文將主要介紹Setup的基本用法和少量原理

OptionsAPI 與 CompositionAPI

Options API

Options API 是 Vue.js 2.x 中使用的傳統組件設計模式。它基于選項對象,將組件的數據、計算屬性、方法、生命周期鉤子等功能按照選項的形式進行組織。Options API 的特點包括:

易于上手:Options API 的結構清晰,容易理解和學習,適合初學者入門。
邏輯分離:不同功能的代碼被分離到不同的選項中,使得代碼更易維護和閱讀。
依賴注入:通過 this 上下文可以方便地訪問到組件的屬性和方法。

Composition API

Composition API 是 Vue.js 3.x 中引入的新特性,旨在解決 Options API 在復雜組件中難以維護的問題。Composition API 允許將組件的邏輯按照功能相關性進行組織,而不是按照選項分散組織。Composition API 的特點包括:

邏輯復用:可以將邏輯抽取為可復用的函數,更方便地在不同組件之間共享邏輯。
代碼組織:將相關邏輯放在一起,使得組件更加清晰和易于維護。
更好的類型推斷:由于函數可以提供更多信息,TypeScript 在使用 Composition API 時能夠提供更好的類型推斷。

對比

Options類型的 API,數據、方法、計算屬性等,集中在:data、methods、computed中的,若想改動一個需求,就需要分別修改:data、methodscomputed,不便于維護和復用。

Composition 可以用函數的方式,更加優(yōu)雅的組織代碼,讓相關功能的代碼更加有序的組織在一起。

上面我將兩種形式的API都列出來了,總的來說OptionsAPI屬于Vue2,CompositionAPI屬于Vue3,本文主要結合兩者進行介紹

介紹

在 Vue3 中,setup 函數是一個新引入的概念,它代替了之前版本中的 data、computed、methods 等選項,用于設置組件的初始狀態(tài)和邏輯。setup 函數的引入使得組件的邏輯更加清晰和靈活,本文將主要介紹Setup的基本用法和少量原理

  • 更靈活的組織邏輯:setup 函數可以將相關邏輯按照功能進行組織,使得組件更加清晰和易于維護。不再受到 Options API 中選項的限制,可以更自由地組織代碼。
  • 邏輯復用:可以將邏輯抽取為可復用的函數,并在 setup 函數中進行調用,實現邏輯的復用,避免了在 Options API 中通過 mixins 或混入對象實現邏輯復用時可能出現的問題。
  • 更好的類型推斷:由于 setup 函數本身是一個普通的 JavaScript 函數,可以更好地與 TypeScript 配合,提供更好的類型推斷和代碼提示。
  • 更好的響應式處理:setup 函數中可以使用 ref、reactive 等函數創(chuàng)建響應式數據,可以更方便地處理組件的狀態(tài),實現數據的動態(tài)更新。
  • 更細粒度的生命周期鉤子:setup 函數中可以使用 onMounted、onUpdated、onUnmounted 等函數注冊組件的生命周期鉤子,可以更細粒度地控制組件的生命周期行為。
  • 更好的代碼組織:setup 函數將組件的邏輯集中在一個地方,使得代碼更易讀、易維護,并且可以更清晰地看到組件的整體邏輯。

上述特點有些暫時用不到,本節(jié)主要介紹下面三個特點

  • setup函數返回的對象中的內容,可直接在模板中使用。
  • setup中訪問thisundefined。
  • setup函數會在beforeCreate之前調用,它是“領先”所有鉤子執(zhí)行的。

在這里插入圖片描述

從下面的圖就可以看出Setup的執(zhí)行要更優(yōu)先,以及this的不適用

在這里插入圖片描述

<template>
   <div class="person">
     <h2>姓名:{{name}}</h2>
     <h2>年齡:{{age}}</h2>
     <button @click="changeName">修改名字</button>
     <button @click="changeAge">修改年齡</button>
     <button @click="showTel">查看聯系方式</button>
   </div>
 </template>
 
 <script lang="ts">
   export default {
     name:'Person',
     setup(){
       console.log('~',this) 
       let name = '花卷' //非響應式
       let age = 22  //非響應式
       let tel = '12435143545'  //非響應式
       
       // 方法
       function changeName() {
         name = '饅頭' 
         console.log(name) 
       }
       function changeAge() {
         age += 1 
         console.log(age) 
       }
       function showTel() {
         alert(tel)
       }
 
       // 將數據、方法交出去
       return {name,age,tel,changeName,changeAge,showTel}
     }
   }
 </script>

setup 的返回值

若返回一個對象:則對象中的:屬性、方法等,在模板中均可以直接使用**(重點關注)。**

在這里插入圖片描述

若返回一個函數:則可以自定義渲染內容,代碼如下:

setup(){
  return ()=> '你好?。?
}

Setup語法糖

大家十分清楚語法糖到哪都是為了使代碼更簡便

接下來我介紹一下語法糖的寫法

<script setup>
</script>

它可以自動返回,無需return返回,我們測試一下,首先在模版把a寫上

在這里插入圖片描述

然后再script里面寫,這里的let a = 111,就自帶返回了,我們接下來看看頁面

<script setup>
   let a = 111
</script>

很不幸,報錯了,我們讀一下報錯內容,兩個標簽必須采用相同類型,那么我們統一就好

在這里插入圖片描述

在這里插入圖片描述

<script lang="ts" setup>
   let a = 111
</script>

這樣結果就出來了

在這里插入圖片描述

我們如果想要修改下面的名字,除了重命名文件(大部分情況不采用),可以采用一個插件

在這里插入圖片描述

我們可以借助vite中的插件簡化

  • 第一步控制臺運行:npm i vite-plugin-vue-setup-extend -D
  • 第二步:vite.config.ts

在這里插入圖片描述

完整代碼如下

<template>
  <div class="person">
    <h2>姓名:{{name}}</h2>
    <h2>年齡:{{age}}</h2>
    <h2>地址:{{address}}</h2>
    <button @click="changeName">修改名字</button>
    <button @click="changeAge">修改年齡</button>
    <button @click="showTel">查看聯系方式</button>
  </div>
</template>

<script lang="ts" setup name="Person">  //自定義命名
  // 此時的name、age、tel都不是響應式的數據
  let name = '張三'
  let age = 22
  let tel = '1424423451'
  let address = '北京市朝陽區(qū)'

  // 方法
  function changeName() {
    name = '' 
    console.log(name) 
  }
  function changeAge() {
    age += 1 
    console.log(age)
  }
  function showTel() {
    alert(tel)
  }
</script>

總結

一開始介紹了Vue2,3對應的兩種API以及對比,之后簡單介紹了一下Vue3特有的函數—Setup,最后圍繞Setup介紹使用語法糖后,可以省略 export default 和 setup 屬性,使得組件的代碼更加簡潔和易讀。同時,Vue 3 也會將 參數地注入到 setup 函數中,使得在使用這些參數時不需要顯式地聲明。

以上就是一文詳解Vue3中的setup函數的用法和原理的詳細內容,更多關于Vue3 setup函數的資料請關注腳本之家其它相關文章!

相關文章

  • vue項目如何設置全局字體樣式font-family

    vue項目如何設置全局字體樣式font-family

    這篇文章主要介紹了vue項目如何設置全局字體樣式font-family問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • vue實現頁面滾動到底部刷新

    vue實現頁面滾動到底部刷新

    這篇文章主要為大家詳細介紹了vue實現頁面滾動到底部刷新,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • vue3中$refs的基本使用方法

    vue3中$refs的基本使用方法

    在Vue中一般很少會用到直接操作DOM,但不可避免有時候需要用到,這時我們可以通過ref和$refs這兩個來實現,下面這篇文章主要給大家介紹了關于vue3中$refs的基本使用方法,需要的朋友可以參考下
    2022-03-03
  • vue自定義組件@click點擊失效問題及解決

    vue自定義組件@click點擊失效問題及解決

    這篇文章主要介紹了vue自定義組件@click點擊失效問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue使用better-scroll實現滑動以及左右聯動

    vue使用better-scroll實現滑動以及左右聯動

    這篇文章主要介紹了vue使用better-scroll實現滑動以及左右聯動,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • 解決el-cascader在IE11瀏覽器中加載頁面自動展開下拉框問題

    解決el-cascader在IE11瀏覽器中加載頁面自動展開下拉框問題

    這篇文章主要為大家介紹了解決el-cascader在IE11瀏覽器中加載頁面自動展開下拉框問題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Vue.js組件使用props傳遞數據的方法

    Vue.js組件使用props傳遞數據的方法

    這篇文章主要為大家詳細介紹了Vue.js組件使用props傳遞數據的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • 用Vue封裝導航欄組件

    用Vue封裝導航欄組件

    這篇文章主要為大家詳細介紹了用Vue封裝導航欄組件的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Vue?響應式系統依賴收集過程原理解析

    Vue?響應式系統依賴收集過程原理解析

    Vue 初始化時就會通過 Object.defineProperty 攔截屬性的 getter 和 setter ,為對象的每個值創(chuàng)建一個 dep 并用 Dep.addSub() 來存儲該屬性值的 watcher 列表,這篇文章主要介紹了Vue?響應式系統依賴收集過程分析,需要的朋友可以參考下
    2022-06-06
  • Vue 重置組件到初始狀態(tài)的方法示例

    Vue 重置組件到初始狀態(tài)的方法示例

    這篇文章主要介紹了Vue 重置組件到初始狀態(tài)的方法示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10

最新評論