Vue.js 中 ref 和 reactive 的區(qū)別及用法解析
Vue.js 中 ref 和 reactive 的區(qū)別及用法
ref
- 目的:創(chuàng)建一個(gè)對值的響應(yīng)式引用。
- 用法:通過
.value屬性來訪問和修改值。 - 示例:
import { ref } from 'vue';
const count = ref(0);
count.value++; // 增加值
console.log(count.value); // 訪問值直接賦值數(shù)組:ref 創(chuàng)建的是一個(gè)包含 .value 屬性的對象,這個(gè) .value 屬性持有實(shí)際的數(shù)據(jù)。無論如何改變這個(gè) .value 的內(nèi)容,Vue 都能檢測到變化并進(jìn)行更新。
import { ref } from 'vue';
const city1List = ref([]);
onMounted(() => {
getCityByPid(0).then(res => {
city1List.value = res.data.data; // 直接賦值新數(shù)組
console.log(city1List.value); // 訪問數(shù)組內(nèi)容
});
});reactive
- 目的:創(chuàng)建一個(gè)深度響應(yīng)的對象或數(shù)組。
- 用法:直接修改響應(yīng)對象或數(shù)組的屬性。
- 示例:
import { reactive } from 'vue'; const state = reactive({ count: 0 });
state.count++; // 增加
count console.log(state.count); // 訪問 count不能直接賦值數(shù)組:reactive 創(chuàng)建的是一個(gè)深度響應(yīng)的對象或數(shù)組,Vue 只跟蹤創(chuàng)建時(shí)的對象引用。如果直接重新賦值一個(gè)新的對象或數(shù)組,Vue 將無法跟蹤新的引用,因?yàn)樾碌囊貌粫蛔詣愚D(zhuǎn)換為響應(yīng)式對象。
import { reactive } from 'vue';
let city1List = reactive([]);
onMounted(() => {
getCityByPid(0).then(res =>
{ city1List.splice(0, city1List.length, ...res.data.data); // 使用數(shù)組方法修改內(nèi)容
console.log(city1List); // 訪問數(shù)組內(nèi)容
});
);關(guān)鍵區(qū)別和最佳實(shí)踐
ref:
創(chuàng)建一個(gè)響應(yīng)式引用。使用 .value 來訪問和修改值??梢灾苯油ㄟ^ .value 重新賦值新的數(shù)組或?qū)ο蟆?/p>
reactive:
- 創(chuàng)建一個(gè)深度響應(yīng)的對象或數(shù)組。
- 直接修改對象或數(shù)組的屬性或元素。
- 不能直接重新賦值整個(gè)對象或數(shù)組,而需要修改其內(nèi)部的屬性或元素。
實(shí)際解決方案
使用 reactive 更新數(shù)組時(shí),可以使用 splice 清除并替換元素,這樣保持了對原始響應(yīng)數(shù)組的引用,Vue 會繼續(xù)跟蹤其內(nèi)容的變化。
import { reactive } from 'vue';
let city1List = reactive([]);
onMounted(() => {
getCityByPid(0).then(res => {
city1List.splice(0, city1List.length, ...res.data.data); // 清除現(xiàn)有數(shù)組并添加新項(xiàng)目
console.log(city1List); // 訪問數(shù)組內(nèi)容
});
});總結(jié)
ref 適用于需要頻繁更改整個(gè)值的場景,因?yàn)樗梢灾苯淤x值新的數(shù)組或?qū)ο蟆?/p>
reactive 適用于需要深度響應(yīng)的對象或數(shù)組,在修改其內(nèi)部屬性或元素時(shí)能保持響應(yīng)性。
到此這篇關(guān)于Vue.js 中 ref 和 reactive 的區(qū)別及用法的文章就介紹到這了,更多相關(guān)Vue.js ref 和 reactive用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何解決模塊““vue“”沒有導(dǎo)出的成員“ref”問題
這篇文章主要介紹了如何解決模塊““vue“”沒有導(dǎo)出的成員“ref”問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04
vue動態(tài)設(shè)置路由權(quán)限的主要思路
這篇文章主要給大家介紹了關(guān)于vue動態(tài)設(shè)置路由權(quán)限的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Vue3 + MybatisPlus實(shí)現(xiàn)批量刪除功能(詳細(xì)代碼)
這篇文章主要介紹了Vue3 + MybatisPlus實(shí)現(xiàn)批量刪除功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-03-03
VUE項(xiàng)目中加載已保存的筆記實(shí)例方法
在本篇文章里小編給大家整理了一篇關(guān)于VUE項(xiàng)目中加載已保存的筆記實(shí)例方法,有興趣的讀者們可以參考下。2019-09-09
vue中關(guān)于template報(bào)錯等問題的解決
這篇文章主要介紹了vue中關(guān)于template報(bào)錯等問題的解決,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04
如何在Vue中實(shí)現(xiàn)登錄驗(yàn)證功能(代碼示例)
Vue是一種流行的JavaScript框架,可以幫助開發(fā)者建立高效的Web應(yīng)用程序,本文將為您介紹如何在Vue中實(shí)現(xiàn)登錄驗(yàn)證功能,并為您提供具體的代碼示例,感興趣的朋友一起看看吧2023-11-11
vue框架和react框架的區(qū)別以及各自的應(yīng)用場景使用
這篇文章主要介紹了vue框架和react框架的區(qū)別以及各自的應(yīng)用場景使用,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10

