Vue 3 中的 Composition API 詳解

Vue.js,作為前端領域流行的框架之一,以其響應式數據綁定和組件化開發贏得了廣大開發者的喜愛。隨著前端技術的不斷發展和項目復雜度的增加,Vue 團隊推出了 Vue 3,并引入了 Composition API,以更好地滿足復雜應用的需求。

一、Composition API 是什么?

Composition API 是 Vue 3 中新增的一組 API,它允許開發者使用函數式編程的方式來組織和復用組件邏輯。與 Vue 2 中的 Options API(如?datamethodscomputed?等選項)不同,Composition API 提供了一種更加靈活和可組合的方式來編寫組件邏輯。

二、為什么需要 Composition API?

  1. 更好的代碼組織:隨著組件功能的增加,Options API 可能會導致代碼難以維護和理解。Composition API 通過將邏輯拆分為多個可復用的函數,提高了代碼的可讀性和可維護性。

  2. 邏輯復用:在 Options API 中,復用邏輯通常需要通過 mixins 或高階組件實現,但這些方式可能導致命名沖突和關系不清晰。Composition API 中的函數可以像普通 JavaScript 函數一樣被復用,無需擔心命名沖突。

  3. 更好的 TypeScript 支持:Vue 3 與 TypeScript 的集成更加緊密,而 Composition API 的函數式編程風格更適合 TypeScript 的類型推斷和靜態檢查。

三、Composition API 的核心概念

  1. reactive 和 ref:這兩個函數用于創建響應式數據。reactive?用于創建響應式對象,而?ref?用于創建響應式引用。它們都是 Vue 3 的響應式系統的核心。

    • reactive:返回一個響應式代理對象,該對象在被訪問或修改時會觸發相應的依賴更新。
    • ref:返回一個響應式引用對象,其內部值可以通過?.value?屬性訪問或修改。
  2. computed:用于創建計算屬性。計算屬性是基于響應式數據派生出的新數據,當依賴的數據變化時,計算屬性會自動更新。

  3. watch 和 watchEffect:用于偵聽響應式數據的變化,并在數據變化時執行相應的回調函數。

    • watch:需要顯式指定偵聽的數據源和回調函數,支持立即執行、深度偵聽等選項。
    • watchEffect:自動偵聽回調函數中使用的響應式數據,無需顯式指定數據源。當回調函數中使用的數據變化時,watchEffect?會自動重新執行回調函數。
  4. setup 函數:Composition API 的入口函數,用于替代 Vue 2 中的?datamethodscomputed?等選項。在?setup?函數中,開發者可以定義和導出組件所需的響應式數據、計算屬性、方法等。

四、使用 Composition API 編寫組件

使用 Composition API 編寫組件時,通常需要在組件的?setup?函數中定義和導出所需的響應式數據、計算屬性和方法等。然后,在組件的模板中可以直接使用這些導出的值和方法。

以下是一個使用 Composition API 編寫的簡單 Vue 3 組件示例:

 

vue復制代碼

<template>
<div>
<p>{{ count }}</p>
<button @click="increment">Increment</button>
</div>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
const count = ref(0); // 定義響應式引用 count,初始值為 0
const increment = () => { // 定義方法 increment,用于增加 count 的值
count.value++; // 修改響應式引用的值時,需要使用 .value 屬性
};
return { // 導出 count 和 increment,供模板中使用
count,
increment
};
}
};
</script>

五、總結與展望

Composition API 為 Vue 3 帶來了更加靈活和可組合的代碼組織方式,使得開發者能夠更好地應對復雜應用的挑戰。同時,Composition API 也為 Vue 與 TypeScript 的集成提供了更好的支持,有助于提升代碼的類型安全和可維護性。隨著 Vue 3 的不斷發展和完善,相信 Composition API 將在前端開發中發揮越來越重要的作用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719742.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719742.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719742.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深度偽造,讓網絡釣魚更加難以辨別

網絡釣魚一直是安全領域的一個突出話題&#xff0c;盡管這類詐騙形式已經存在了幾十年&#xff0c;依舊是欺詐攻擊或滲透組織的最有效方法之一。詐騙分子基于社會工程原理&#xff0c;通過郵件、網站以及電話、短信和社交媒體&#xff0c;利用人性&#xff08;如沖動、不滿、好…

嵌入式驅動學習第二周——Linux內核打印

前言 這篇博客來聊一聊Linux內核打印。 嵌入式驅動學習專欄將詳細記錄博主學習驅動的詳細過程&#xff0c;未來預計四個月將高強度更新本專欄&#xff0c;喜歡的可以關注本博主并訂閱本專欄&#xff0c;一起討論一起學習。現在關注就是老粉啦&#xff01; 目錄 前言1. dmesg指令…

react diff

react diff算法為降低算法復雜度提出了三大策略&#xff1a; 1.只進行同級比較 2.節點類型比較&#xff0c;不同元素生成不同的fiber樹 3.key作為元素的唯一標識 diff算法流程 diff算法需要進行兩輪遍歷&#xff1a; 第一輪遍歷更新的節點。 第二輪遍歷沒更新的節點。 第一輪…

【LeetCode:225. 用隊列實現棧 + 棧 | 隊列】

&#x1f680; 算法題 &#x1f680; &#x1f332; 算法刷題專欄 | 面試必備算法 | 面試高頻算法 &#x1f340; &#x1f332; 越難的東西,越要努力堅持&#xff0c;因為它具有很高的價值&#xff0c;算法就是這樣? &#x1f332; 作者簡介&#xff1a;碩風和煒&#xff0c;…

水牛社軟件是真的嗎?

軟件是真的&#xff0c;不過畢竟是為了賺錢或者獲取資源而買的&#xff0c;所以大部分只關心能賺多少錢吧 說實話&#xff0c;我用了2年了&#xff0c;一些獨立的項目還有群&#xff0c;有一月掙幾千上萬的&#xff0c;有一月賺幾百的 軟件是一個集合體&#xff0c;不是像很多…

【leetcode刷題之路】面試經典150題(5)——二叉樹+二叉樹層次遍歷+二叉搜索樹

文章目錄 9 二叉樹9.1 【遞歸】二叉樹的最大深度9.2 【遞歸】相同的樹9.3 【遞歸】翻轉二叉樹9.4 【遞歸】對稱二叉樹9.5 【遞歸】從前序與中序遍歷序列構造二叉樹9.6 【遞歸】從中序與后序遍歷序列構造二叉樹9.7 【BFS】填充每個節點的下一個右側節點指針 II9.8 【遞歸】二叉樹…

代碼隨想錄第二十七天 455.分發餅干 376.擺動序列 53.最大子序和 122.買賣股票的最佳時機II

LeetCode 455 分發餅干 題目描述 假設你是一位很棒的家長&#xff0c;想要給你的孩子們一些小餅干。但是&#xff0c;每個孩子最多只能給一塊餅干。 對每個孩子 i&#xff0c;都有一個胃口值 g[i]&#xff0c;這是能讓孩子們滿足胃口的餅干的最小尺寸&#xff1b;并且每塊餅…

2024全國護網行動HW行動招聘/收人!!!

2024全國護網行動HW行動招聘 溯蓉信創開始收人啦&#xff01;&#xff01;&#xff01;現在開始收錄2024HW簡歷&#xff0c;感興趣的小伙伴掃碼二維碼添加微信 我們簽約后&#xff0c;入場即預付款3k&#xff0c;簽約后我們會在HW之前對我們的人員進行HW培訓&#xff0c;保證上…

Three.js--》探尋Cannon.js構建震撼的3D物理交互體驗(一)

我們用three.js可以繪制出各種酷炫的畫面&#xff0c;但是當我們想要一個更加真實的物理效果的話&#xff0c;這個時候我們就需要一個物理的庫&#xff0c;接下來我們就講解一下今天要學習的canon&#xff0c;它可以給我們提供一個更加真實的物理效果&#xff0c;像物體的張力、…

YOLOv8姿態估計實戰:訓練自己的數據集

課程鏈接&#xff1a;https://edu.csdn.net/course/detail/39355 YOLOv8 基于先前 YOLO 版本的成功&#xff0c;引入了新功能和改進&#xff0c;進一步提升性能和靈活性。YOLOv8 同時支持目標檢測和姿態估計任務。 本課程以熊貓姿態估計為例&#xff0c;將手把手地教大家使用C…

Mysql實戰(2)之MySQL執行流程

-- 查看mysql當前有多少連接 show global status like Thread%; /* Threads_cached&#xff1a;緩存中的線程連接數 Threads_connected&#xff1a;當前打開的連接數 Threads_created&#xff1a;為處理連接創建的線程數 Threads_running&#xff1a;非睡眠狀態的連接數&…

windows部署mariadb-11.3

因為需要用到數據庫來處理一些東西,所以決定在windows上安裝一下MariaDB. 隨著版本升級,安裝已經不是那么復雜了.對應的.其實網上一大堆的檢索結果,很多并不可用. 由于是開發環境,這里一切從簡了. 下載安裝包.并解壓進入bin目錄,使用mysql_install_db.exe程序來進行安裝.執行 m…

MSCKF5講:后端代碼分析

MSCKF5講&#xff1a;后端代碼分析 文章目錄 MSCKF5講&#xff1a;后端代碼分析1 初始化initialize()1.1 加載參數1.2 初始化IMU連續噪聲協方差矩陣1.3 卡方檢驗1.4 接收與訂閱話題createRosIO() 2 IMU靜止初始化3 重置resetCallback()4 featureCallback4.1 IMU初始化判斷4.2 I…

【文末送書】智能計算:原理與實踐

歡迎關注博主 Mindtechnist 或加入【智能科技社區】一起學習和分享Linux、C、C、Python、Matlab&#xff0c;機器人運動控制、多機器人協作&#xff0c;智能優化算法&#xff0c;濾波估計、多傳感器信息融合&#xff0c;機器學習&#xff0c;人工智能等相關領域的知識和技術。關…

Linux系統運維腳本:一鍵添加防火墻規則(開啟服務和網絡端口)

目 錄 一、要求 二、解決方案 &#xff08;一&#xff09;解決思路 &#xff08;二&#xff09;方案 三、腳本程序實現 &#xff08;一&#xff09;腳本代碼和解釋 1、腳本代碼 2、代碼解釋 &#xff08;二&#xff09;腳本驗證 1、腳本編輯 2、給予執行權限…

NumPy數據處理詳解的筆記2

NumPy數據處理詳解的筆記2 第1章NumPy基礎 NumPy是用于處理多維數組的數值運算庫&#xff0c;不僅可用于 機器學習&#xff0c;還可以用于圖像處理&#xff0c;語言處理等任務。 1.2 多維數據結構ndarray的基礎 在學習NumPy的過程中&#xff0c;只要理解了ndarray的相關知識…

java 關于 Object 類中的 wait 和 notify 方法。(生產者和消費者模式!)

4、關于 Object 類中的 wait 和 notify 方法。&#xff08;生產者和消費者模式&#xff01;&#xff09; 第一&#xff1a;wait 和 notify 方法不是線程對象的方法&#xff0c;是 java 中任何一個 java 對象都有的方法&#xff0c;因為這兩個方法是 Object 類中自帶的。 wait 方…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的停車位檢測系統(Python+PySide6界面+訓練代碼)

摘要&#xff1a;開發停車位檢測系統對于優化停車資源管理和提升用戶體驗至關重要。本篇博客詳細介紹了如何利用深度學習構建一個停車位檢測系統&#xff0c;并提供了完整的實現代碼。該系統基于強大的YOLOv8算法&#xff0c;并結合了YOLOv7、YOLOv6、YOLOv5的性能對比&#xf…

HarmonyOS端云體化開發—創建端云一體化開發工程

云開發工程模板 DevEco Studio目前提供了兩種云開發工程模板&#xff1a;通用云開發模板和商城模板。您可根據工程向導輕松創建端云一體化開發工程&#xff0c;并自動生成對應的代碼和資源模板。在創建端云一體化開發工程前&#xff0c;請提前了解云開發工程模板的相關信息。 …

前端學習之HTML(第一天)

什么是HTML HTML是一種用來描述網頁的一種語言&#xff0c;HTML不是一種編程語言&#xff0c;而是一種標記語言。 HTML標簽 HTML 標簽是由尖括號包圍的關鍵詞&#xff0c;比如 <html> HTML 標簽通常是成對出現的&#xff0c;比如 <b> 和 </b> 標簽對中的…