Vue響應式狀態ref()與reactive()

1. ref()聲明響應式狀態

<template><!--DOM元素調用變量時,不需要指定輸出變量的value,因為Vue會幫你輸出.value但是注意,這個幫助只會幫助頂級的ref屬性才會被解包--><div>{{ count }}</div><div>{{ object }}</div><div>{{ array }}</div>
</template>
<script setup>
//從vue中獲取ref方法
import { ref } from "vue";name: "App";
console.log('--------------------------------------------------------------------------')
//定義一個變量count,設置為響應式,初始值為0
let count = ref(0);
//輸出變量count的值,結果為RefImpl對象,其內部會有被數據劫持的value
console.log('count:',count);
//輸出變量count的value值,結果為0
console.log('count.value:',count.value);
//實現對變量的操作,0+1
count.value++;
//再次輸出變量count的value值,結果為1
console.log('+1后的count.value:',count.value);console.log('------------------------------ref使用對象-------------------------------------')//定義一個對象,使用ref聲明其狀態為響應式
let object=ref({id:1,name:'小綠'
})
//輸出object的value值為Proxy(Object) {id: 1, name: '小綠'}
console.log('其value:',object.value)
//輸出object下name的值為小綠
console.log('對象object的name值:',object.value.name)
//修改object的name值為小紅
object.value.name='小紅'
//輸出修改后的object的name值為小紅
console.log('修改object的name值后輸出:',object.value.name)console.log('------------------------------ref使用數組-------------------------------------')
let array=ref(['洗澡','學習','唱歌'])
//輸出array的value值為Proxy(Array) {0: '洗澡', 1: '學習', 2: '唱歌'}
console.log('其value:',array.value)
//輸出array下標為0的值為洗澡
console.log('對象array的下標為0的值:',array.value[0])
//修改array下標為0的值為打撲克
array.value[0]='打撲克'
//輸出修改后的array下標為0值為打撲克
console.log('改后的array下標為0值輸出:',array.value[0])
</script><style scoped>
</style>

在這里插入圖片描述
HTML輸出
1
{ “id”: 1, “name”: “小紅” }
[ “打撲克”, “學習”, “唱歌” ]

2. reactive()使對象本身具有響應性

<template><!--DOM元素調用變量時,不需要指定輸出變量的value,因為Vue會幫你輸出.value但是注意,這個幫助只會幫助頂級的ref屬性才會被解包--><div>{{ state.count }}</div><div>{{ array[0] }}</div>
</template>
<script setup>
//從vue中獲取ref方法
import { reactive } from "vue";name: "App";
console.log('------------------------------reactive使用對象-------------------------------------')
//定義一個對象state,設置其響應性,state對象的count屬性值為0
let state = reactive({count:0
});
//輸出state對象值
console.log('state對象值為:',state)
//輸出state對象的count屬性值
console.log('state對象的count屬性值為:',state.count)
//設置state對象的屬性count值為1
state.count++
//輸出state對象的count屬性加1后的值
console.log('輸出state對象的count屬性加1后的值:',state.count)console.log('------------------------------reactive使用數組-------------------------------------')
//定義數組,設置其響應性
let array = reactive(['洗澡','學習','唱歌']);
//輸出array數組值
console.log('array數組值為:',array)
//輸出array數組下標為0的值
console.log('array數組下標為0的值為:',array[0])
//設置array數組下標為0的值為看電視
array[0]='看電視'
//輸出array數組下標為0的數據修改后的值
console.log('輸出array數組下標為0的數據修改后的值:',array[0])console.log('------------------------------數據原理及注意事項-------------------------------------')
//reactive() 返回的是一個原始對象的 Proxy,它和原始對象是不相等的
const raw={}
const proxy=reactive(raw)
console.log('對比proxy與raw設置響應性后是否相等:',proxy===raw)//對同一個原始對象調用 reactive() 會總是返回同樣的代理對象,而對一個已存在的代理對象調用 reactive() 會返回其本身
console.log('對同一個原始對象raw調用reactive():',proxy===reactive(raw))
console.log('對一個已存在的代理proxy對象調用reactive():',proxy===reactive(proxy))//依靠深層響應性,響應式對象內的嵌套對象依然是代理
const proxy1=reactive({})
proxy.nested = raw
console.log('proxy1嵌套對象nested與raw是否相等:',proxy.nested===raw)
</script><style scoped>
</style>

在這里插入圖片描述

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

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

相關文章

git切換倉庫地址

已有git倉庫&#xff0c;要切換提交的倉庫地址&#xff0c;用以下命令 git remote set-url origin 自己的倉庫地址 用以下命令&#xff0c;查看當前倉庫地址&#xff1a; git remote show origin 切換倉庫后&#xff0c;用以下命令初始化提交倉庫&#xff1a; git push -u o…

數據庫增刪改查

DDL: 數據定義語言&#xff0c;用來定義數據庫對象&#xff08;數據庫、表、字段&#xff09;DML: 數據操作語言&#xff0c;用來對數據庫表中的數據進行增刪改DQL: 數據查詢語言&#xff0c;用來查詢數據庫中表的記錄DCL: 數據控制語言&#xff0c;用來創建數據庫用戶、控制數…

c++11:可調用對象

文章目錄 引言1.普通函數2.函數指針3.函數對象(仿函數)4.Lambda表達式(匿名函數)5.function6.bind 引言 可調用對象是C11引入的新概念&#xff0c;可以像函數調用方式的觸發調用的對象就是可調用對象。 c98可調用對象(普通函數&#xff0c;函數指針&#xff0c;仿函數) c11可調…

Java設計模式【代理模式】

一、前言 1.1 背景 在不改變原有代碼的基礎上&#xff0c;對方法進行功能性的增強&#xff1b; 1.2 簡介 代理模式是一種結構型模式&#xff0c;為其他對象提供一種代理以控制對這個對象的訪問。在某些情況下&#xff0c;一個對象不想或者不能直接引用另一個對象&#xff0…

axure9.0 工具使用思考

原型設計軟件【AxureRP】快速原型設計工具原型設計軟件【AxureRP】快速原型設計工具原型設計軟件【AxureRP】快速原型設計工具原型設計軟件【AxureRP】快速原型設計工具原型設計軟件【AxureRP】快速原型設計工具原型設計軟件【AxureRP】快速原型設計工具原型設計軟件【AxureRP】…

CentOS使用Docker搭建Halo網站并實現無公網ip遠程訪問

&#x1f525;博客主頁&#xff1a; 小羊失眠啦. &#x1f3a5;系列專欄&#xff1a;《C語言》 《數據結構》 《C》 《Linux》 《Cpolar》 ??感謝大家點贊&#x1f44d;收藏?評論?? 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&…

【華為OD機試真題 C++語言】483、中文分詞模擬器 | 機試真題+思路參考+代碼解析(C卷)

文章目錄 一、題目??題目描述??輸入輸出??樣例1??樣例2??樣例3二、思路參考三、代碼參考作者:KJ.JK??個人博客首頁: KJ.JK ??專欄介紹: 華為OD機試真題匯總,定期更新華為OD各個時間階段的機試真題,每日定時更新,本專欄將使用C++語言進行更新解答,包含真…

創紀錄:英偉達市值一日增 2770 億美元;Xiaomi 14 Ultra 正式發布丨 RTE 開發者日報 Vol.150

開發者朋友們大家好&#xff1a; 這里是 「RTE 開發者日報」 &#xff0c;每天和大家一起看新聞、聊八卦。我們的社區編輯團隊會整理分享 RTE &#xff08;Real Time Engagement&#xff09; 領域內「有話題的 新聞 」、「有態度的 觀點 」、「有意思的 數據 」、「有思考的 文…

mysql 用戶權限管理

mysql使用系統庫mysql的user表來存儲用戶信息。mysql.user表詳細的記錄了用戶名&#xff0c;對應的允許連接的主機信息還有各種全局權限標識位。 用戶管理 創建用戶 CREATE USER 用戶名host主機 IDENTIFIED BY 密碼;上面是創建用的基本命令&#xff0c;指定了用戶名&#xf…

Selenium基礎知識

一、環境搭建&#xff08;以java為例&#xff09; 1.下載chrome瀏覽器 https://www.google.cn/intl/zh-CN/chrome/ 2.查看chrome瀏覽器版本 設置關于chrome 3.下載chrome瀏覽器驅動 下載瀏覽器對應版本的 ChromeDriver - WebDriver for Chrome - Downloads 120以上版本&…

WordPress使用

WordPress功能菜單 儀表盤 可以查看網站基本信息和內容。 文章 用來管理文章內容&#xff0c;分類以及標簽。編輯文章以及設置分類標簽&#xff0c;分類和標簽可以被添加到 外觀-菜單 中。 分類名稱自定義&#xff1b;別名為網頁url鏈接中的一部分&#xff0c;最好別設置為中文…

概率密度函數(PDF)與神經網絡中的激活函數

原創:項道德(daode3056,daode1212) 在量子力學中&#xff0c;許多現象都是統計的結果&#xff0c;基本上用的是正態分布&#xff0c;然而&#xff0c;從本質上思考&#xff0c;應該還存在低階的分布&#xff0c;標準的正態分布是它的極限&#xff0c;這樣一來&#xff0c;或許在…

python中多線程使用

前言 記錄下Python中多線程使用 標題 前言簡介使用demo 簡介 Python 中的多線程主要通過 threading 模塊來實現。多線程是一種并發編程的方式&#xff0c;允許程序在同一時間執行多個線程&#xff0c;每個線程執行不同的任務。然而需要注意的是&#xff0c;在 Python 中由于 …

【前端素材】推薦優質后臺管理系統Spica Admin平臺模板(附源碼)

一、需求分析 后臺管理系統是一種用于管理網站、應用程序或系統的工具&#xff0c;它通常作為一個獨立的后臺界面存在&#xff0c;供管理員或特定用戶使用。下面詳細分析后臺管理系統的定義和功能&#xff1a; 1. 定義 后臺管理系統是一個用于管理和控制網站、應用程序或系統…

【安全】大模型安全綜述

大模型相關非安全綜述 LLM演化和分類法 A survey on evaluation of large language models,” arXiv preprint arXiv:2307.03109, 2023.“A survey of large language models,” arXiv preprint arXiv:2303.18223, 2023.“A survey on llm-gernerated text detection: Necess…

刷題日記-Day1- Leedcode-704. 二分查找,27. 移除元素-Python實現

704 二分查找 鏈接&#xff1a;https://leetcode.cn/problems/binary-search/description/ 給定一個 n 個元素有序的&#xff08;升序&#xff09;整型數組 nums 和一個目標值 target &#xff0c;寫一個函數搜索 nums 中的 target&#xff0c;如果目標值存在返回下標&#xf…

vue3 toRefs之后的變量修改方法

上效果 修改值需要帶上解構之前的對象名obj&#xff0c; changeName:()>{ // toRefs 解決后變量修改值方法&#xff1a; 解構前變量.字段新值 obj.name FEIFEI; } } 案例源碼 <!DOCTYPE html> <html> <head><me…

如何在pgAdmin中用替換的值更新jsonb列?

我有一個名為files的PostgreSQL表&#xff0c;其中包括一個名為formats的jsonb表。雖然有些行是[null]&#xff0c;但其他行具有此結構的對象&#xff1a; {"thumbnail": {"ext": ".jpg","url": "https://some-url.com/image01.…

Vue | (四)使用Vue腳手架(上) | 尚硅谷Vue2.0+Vue3.0全套教程

文章目錄 &#x1f4da;初始化腳手架&#x1f407;創建初體驗&#x1f407;分析腳手架結構&#x1f407;關于render&#x1f407;查看默認配置 &#x1f4da;ref與props&#x1f407;ref屬性&#x1f407;props配置項 &#x1f4da;混入&#x1f4da;插件&#x1f4da;scoped樣…

idea配置javafx

一、下載sdk 在jdk8之后,需要下載sdk包 ??javafx-sdk-18.zip 這里適用的jkd版本如圖 二、配置 創建一個項目之后,進行如下配置,將sdk導入到項目中 配置啟動參數 可以使用-號將之前的去掉&