VUE3入門很簡單(1)--- 響應式對象

前言

重要提示:文章只適合初學者,不適合專家!!!

什么是響應式對象?

在Vue3中,響應式對象就是這種智能溫控器。當你修改JavaScript對象的數據時,Vue會自動更新網頁上顯示的內容,無需手動操作DOM。簡單來說:數據變,頁面自動跟著變。

創建響應式對象的三種方式

1. reactive() - 用于對象

適合處理對象、數組等復雜數據結構

import { reactive } from 'vue';// 創建一個響應式用戶對象
const user = reactive({name: '張三',age: 30,hobbies: ['讀書', '游泳']
});// 修改屬性 - 自動觸發更新
user.age = 31; 
user.hobbies.push('登山'); // 數組變化也能檢測

2. ref() - 全能選手

適合處理字符串、數字等基本類型,也可以處理對象

import { ref } from 'vue';// 創建一個響應式計數器
const count = ref(0); // 創建響應式字符串
const message = ref('你好Vue3!');// 創建響應式對象(內部會轉為reactive)
const settings = ref({theme: 'light',fontSize: 16
});// 修改值時需要通過.value
count.value = 5; 
message.value = '歡迎學習響應式';
settings.value.fontSize = 18;

3. toRefs() - 保持響應性的解構

解決reactive對象解構后丟失響應性的問題

import { reactive, toRefs } from 'vue';const user = reactive({name: '李四',age: 25
});// 普通解構會丟失響應性 ?
// const { name, age } = user;// 使用toRefs保持響應性 ?
const { name, age } = toRefs(user);// 在腳本中使用要加.value
console.log(name.value); // "李四"

模板和腳本中使用實戰

完整組件示例

<template><div class="user-card"><!-- ref對象在模板自動解包,無需.value --><h2>{{ name }}</h2><!-- reactive對象直接使用屬性 --><p>年齡: {{ age }} 歲</p><p>狀態: {{ isAdult ? "成年人" : "未成年人" }}</p><!-- 使用ref定義的計算屬性 --><p>BMI: {{ bmi }}</p><button @click="increaseAge">過生日</button><button @click="changeName">改名</button><input v-model="userInfo.height" type="number" placeholder="輸入身高" /></div>
</template><script setup>
import { reactive, ref, computed, toRefs } from "vue";// 使用ref定義基本類型
const name = ref("王小明");// 使用reactive定義對象
const userInfo = reactive({age: 16,height: 175, // 厘米weight: 70, // 公斤
});// 使用toRefs解構,保持響應性
const { age } = toRefs(userInfo);// 計算屬性
const bmi = computed(() => {const heightInM = userInfo.height / 100;return (userInfo.weight / (heightInM * heightInM)).toFixed(1);
});// 基于計算屬性的狀態
const isAdult = computed(() => userInfo.age >= 18);// 修改基本類型的方法
function changeName() {name.value = name.value === "王小明" ? "李小華" : "王小明";
}// 修改響應式對象的方法
function increaseAge() {userInfo.age += 1;userInfo.weight += 1; // 過生日重了1公斤 😄
}
</script><style>
.user-card {border: 1px solid #ccc;padding: 20px;border-radius: 8px;max-width: 300px;
}
button {margin: 5px;
}
</style>

常見疑問解答

1. ref和reactive該用哪個?

場景推薦使用示例
基本類型(數字、字符串)refconst count = ref(0)
對象和數組reactiveconst user = reactive({...})
需要在組件外部傳遞值ref模板引用更靈活
表單綁定refv-model="message"
解構對象屬性toRefsconst { id } = toRefs(item)

經驗法則:默認使用ref,對象/數組用reactive

2. 為什么我的數據變化沒有觸發更新?

常見原因:

  1. 直接解構reactive對象 ?
    錯誤:const { age } = user (會丟失響應性)
    正確:const { age } = toRefs(user) ?

  2. 直接替換reactive對象 ?

    let state = reactive({ count: 0 });
    // 錯誤方式 - 失去響應性
    state = { count: 1 };
    

    正確做法:修改屬性而不是整個對象 ?
    state.count = 1

  3. 異步更新數據 ?
    需要在數據修改后操作DOM?使用nextTick:

    import { nextTick } from 'vue';count.value++;
    nextTick(() => {// 此時DOM已經更新console.log(document.getElementById('count').textContent);
    });
    

總結:響應式對象核心要點

  1. 核心概念:數據變 ? 視圖自動更新

  2. 創建方式

    • reactive():用于對象/數組
    • ref():用于基本類型、對象引用
    • toRefs():安全解構對象屬性
  3. 模板使用

    • ref對象自動解包(不用.value)
    • reactive對象直接使用屬性
  4. 注意事項

    • 避免直接解構reactive對象
    • 修改數組使用push/pop等方法
  5. 經驗法則

    “遇到對象用reactive,其他情況用ref”

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

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

相關文章

廣州華銳互動攜手中石油:AR 巡檢系統實現重大突破?

廣州華銳互動在 AR 技術領域的卓越成就&#xff0c;通過一系列與知名企業、機構的成功合作案例得以充分彰顯。其中&#xff0c;與中石油的合作項目堪稱經典&#xff0c;展現了廣州華銳互動運用 AR 技術解決實際難題、達成目標的強大實力。? 中石油作為能源行業的巨擘&#xff…

權威認證!華宇TAS應用中間件榮獲CCRC“中間件產品安全認證”

近日&#xff0c;華宇TAS應用中間件順利通過了中國網絡安全審查認證和市場監管大數據中心(CCRC)的信息安全認證&#xff0c;獲得了IT產品信息安全認證證書。此次獲證&#xff0c;標志著華宇TAS應用中間件在安全性、可靠性及合規性等方面達到行業領先水平&#xff0c;可以為政企…

BI財務分析 – 反映盈利水平利潤占比的指標如何分析(下)

之前的文章重點把構成銷售凈利率、主營業務利潤率、成本費用利潤率、營業利潤率、銷售毛利率的分母像銷售收入、營業收入、主營業務收入凈額、成本費用總額做了比較細致的說明&#xff0c;把這幾個基本的概念搞明白后&#xff0c;再來看這幾個指標就比較容易理解了。 銷售凈利…

竹云受邀出席華為開發者大會,與華為聯合發布海外政務數字化解決方案

6月20日-22日&#xff0c;華為開發者大會&#xff08;HDC 2025&#xff09;在東莞松山湖盛大召開。作為華為一年一度面向全球開發者的頂級科技盛會&#xff0c;今年的HDC不僅帶來了HarmonyOS 6.0 Beta版本、盤古大模型5.5等多項重磅技術和產品更新&#xff0c;更聚集了全球極客…

AI助力游戲設計——從靈感到行動-靠岸篇

OK&#xff0c;朋友&#xff0c;如果你到了這里&#xff0c;那就證明這趟旅程&#xff0c;快要到岸了。 首先&#xff0c;恭喜你&#xff0c;到了需要這一步的時候。其實&#xff0c;如果你有一天真的用到了&#xff0c;希望你可以回來打個卡。行了&#xff0c;不廢話&#xf…

vue將頁面導出pdf,vue導出pdf ,使用html2canvas和jspdf組件

vue導出pdf 需求&#xff1a;需要前端下載把當前html下載成pdf文件–有十八頁超長&#xff0c;之前使用vue-html2pdf組件&#xff0c;但是這個組件有長度限制和比較新瀏覽器版本限制&#xff0c;所以改成使用html2canvas和jspdf組件 方法&#xff1a; 1、第一步&#xff1a;我…

024 企業客戶管理系統技術解析:基于 Spring Boot 的全流程管理平臺

企業客戶管理系統技術解析&#xff1a;基于Spring Boot的全流程管理平臺 在企業數字化轉型的浪潮中&#xff0c;高效的客戶管理系統成為提升企業競爭力的關鍵工具。本文將深入解析基于Java和Spring Boot框架構建的企業客戶管理系統&#xff0c;該系統涵蓋員工管理、客戶信息管…

JavaScript性能優化代碼示例

JavaScript性能優化實戰大綱 性能優化的核心目標 減少加載時間、提升渲染效率、降低內存占用、優化交互響應 代碼層面的優化實踐 避免全局變量污染&#xff0c;使用局部變量和模塊化開發 減少DOM操作頻率&#xff0c;批量處理DOM更新 使用事件委托替代大量事件監聽器 優化循…

樹的重心(雙dfs,換根)

思路&#xff1a; 基于樹形 DP 的兩次遍歷&#xff08;第一次dfs計算以某個初始根&#xff08;這里選了 1&#xff09;為根時各子樹的深度和與節點數&#xff0c;第二次zy進行換根操作&#xff0c;更新每個節點作為根時的深度和&#xff09; 換根原理&#xff1a; 更換主根&…

官方App Store,直鏈下載macOS ,無需Apple ID,macOS10.10以上.

前言 想必很多人都有過維修老舊Mac的體驗,也有過想要重裝macos的體驗. 尤其是前者,想要重裝或者升級系統,由于官方已經無法更新,必須下載iSo鏡像 這時就會遇到死循環:想要更新macOS ,必須先使用更高版本的App Store,但要使用更高版本的App Store,必須先更新macOS !!! 如果想…

芋道生成前端界面代碼詳解

一、搜索框 1、整體架構 <ContentWrap> ... </ContentWrap><ContentWrap> 是頁面布局容器&#xff08;可能是自定義組件&#xff09;&#xff0c;包裹住頁面的內容區域。 2、el-form 表單&#xff08;搜索區域&#xff09; 2.1參數 <el-formclass&quo…

小程序入門:推廣技巧與運行數據查看解析

在當今數字化時代&#xff0c;小程序的應用愈發廣泛&#xff0c;無論是企業還是個人開發者&#xff0c;都希望自己的小程序能夠獲得更多用戶關注并順利運行。本文將詳細介紹小程序發布的流程、推廣策略以及如何查看運行數據&#xff0c;助力開發者更好地運營小程序。 一、小程…

sql server 將nvarchar長度設置成max有什么隱患

在學習 SQL Server 的過程中&#xff0c;很多開發者會選擇將 NVARCHAR 字段的長度設置為 MAX&#xff0c;以便于存儲大量文本數據。雖然這樣的設計在某些情況下可能會帶來便利&#xff0c;但卻潛藏著諸多隱患。本文將通過步驟性指導&#xff0c;幫助你理解這些隱患及其解決方式…

電商數據爬取實戰:如何挖掘隱藏的商業價值 ||電商API接口的應用價值

當你在深夜瀏覽電商平臺&#xff0c;目光被那些標注著“月銷10萬”的商品所吸引時&#xff0c;你是否曾思考過——這些驚人的數字背后隱藏著怎樣的商業秘密&#xff1f;今天&#xff0c;就讓我們化身為電商數據獵手&#xff0c;揮舞起爬蟲這把鋒利的手術刀&#xff0c;精心解剖…

??MQTT??通訊:??物聯網

??MQTT??通訊&#xff1a; ??物聯網&#xff08;IoT&#xff09;??&#xff1a;傳感器數據上報&#xff08;溫度、濕度&#xff09;、智能家居設備控制。 ??弱網絡環境??&#xff1a;移動網絡、衛星通信&#xff08;如遠程農業監測&#xff09;。 ??云端集成??…

swagger訪問不了的解決方案 http://localhost:8080/swagger-ui/index.html

確保增加 swagger 依賴 pom.xml <!-- Swagger --><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.5.0</version></dependency> 在瀏覽器打開…

在 .NET Core WebAPI 項目中,執行文件(.exe)方式運行并指定端口

? 方法一&#xff1a;使用命令行指定端口 .NET Core WebAPI 項目默認使用 Kestrel Web 服務器&#xff0c;你可以通過環境變量或命令行參數來覆蓋默認監聽地址和端口。 示例命令&#xff1a; MyApi.exe --urls "http://localhost:5001"或者綁定所有主機地址&…

前綴樹進階-經典案例詳解

前綴樹進階-經典案例詳解 一、前綴樹基礎內容回顧二、單詞搜索建議系統2.1 問題描述2.2 解題思路2.3 Java代碼實現2.4 復雜度分析 三、單詞編碼3.1 問題描述3.2 解題思路3.3 Java代碼實現3.4 復雜度分析 四、最長單詞4.1 問題描述4.2 解題思路4.3 Java代碼實現4.4 復雜度分析 我…

Redis集群實現方式

? 一、什么是 Redis 集群&#xff08;Redis Cluster&#xff09; Redis 集群是 Redis 官方在 3.0 版本引入的分布式部署方案&#xff0c;它的目標是解決以下幾個問題&#xff1a; 單個 Redis 實例容量有限&#xff08;最多只能使用一個服務器的內存&#xff09; 單點故障&am…

《中國電信運營商骨干網:歷史、現狀與未來演進》系列 第五篇:新玩家入局——中國廣電CBNNET如何構建全國一張網?

專欄引言 在中國電信、聯通、移動三足鼎立的骨干網格局中&#xff0c;一位身負特殊使命的“國家隊新兵”正加速入場。它就是中國廣電。根據2023年發布的《廣電網絡融合發展戰略》&#xff0c;其核心任務是構建一張“新型廣電網絡”。手握700MHz“黃金頻段”和5G牌照&#xff0c…