最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3.x?的shallowReactive?與?shallowRef?使用場景分析

 更新時間:2025年02月20日 11:36:19   作者:黑碼小帥  
在Vue3.x中,`shallowReactive`和`shallowRef`是用于創(chuàng)建淺層響應式數據的API,它們與`reactive`和`ref`類似,本文介紹vue3.x??shallowReactive?與?shallowRef的使用場景,感興趣的朋友一起看看吧

在 Vue 3.x 中,shallowReactive 和 shallowRef 是兩個用于創(chuàng)建淺層響應式數據的 API。它們與 reactive 和 ref 類似,但在處理嵌套對象時的行為有所不同。以下是它們的詳細解讀和示例。

1. shallowReactive

作用

shallowReactive 創(chuàng)建一個淺層響應式對象,只有對象的頂層屬性是響應式的,嵌套對象的屬性不會轉換為響應式。

使用場景

  • 當你只需要對象的頂層屬性是響應式,而不關心嵌套對象的響應性時。
  • 當嵌套對象的響應性轉換可能帶來性能開銷時。

示例

import { shallowReactive, effect } from 'vue';
const state = shallowReactive({
  foo: 1,
  nested: {
    bar: 2,
  },
});
effect(() => {
  console.log('foo changed:', state.foo); // 響應式
});
effect(() => {
  console.log('nested.bar changed:', state.nested.bar); // 非響應式
});
state.foo = 10; // 觸發(fā)第一個 effect
state.nested.bar = 20; // 不會觸發(fā)第二個 effect

解釋:

  • state.foo 是響應式的,修改它會觸發(fā)依賴更新。
  • state.nested.bar 不是響應式的,修改它不會觸發(fā)依賴更新。

2. shallowRef

作用

shallowRef 創(chuàng)建一個淺層響應式引用,只有 .value 屬性本身是響應式的,而 .value 內部的屬性不會轉換為響應式。

使用場景

  • 當你只需要 .value 是響應式的,而不關心 .value 內部屬性的響應性時。
  • 當 .value 是一個復雜對象,且不需要深度監(jiān)聽時。

示例

import { shallowRef, effect } from 'vue';
const count = shallowRef({
  value: 1,
});
effect(() => {
  console.log('count changed:', count.value.value); // 非響應式
});
count.value.value = 10; // 不會觸發(fā) effect
count.value = { value: 20 }; // 觸發(fā) effect

解釋:

  • count.value 是響應式的,修改它會觸發(fā)依賴更新。
  • count.value.value 不是響應式的,但直接修改 count.value 會觸發(fā)依賴更新。

3. shallowReactive 與 shallowRef 的區(qū)別

特性shallowReactiveshallowRef
作用對象對象任意值(通常用于對象或復雜數據)
響應式范圍只有頂層屬性是響應式的只有 .value 是響應式的
嵌套對象處理嵌套對象的屬性不是響應式的.value 內部的屬性不是響應式的
典型使用場景只需要頂層屬性響應式的對象只需要 .value 響應式的引用

4. shallowReactive 與 reactive 的對比

reactive 的深度響應式

import { reactive, effect } from 'vue';
const state = reactive({
  foo: 1,
  nested: {
    bar: 2,
  },
});
effect(() => {
  console.log('nested.bar changed:', state.nested.bar); // 響應式
});
state.nested.bar = 20; // 觸發(fā) effect

reactive 會將整個對象及其嵌套屬性都轉換為響應式。

shallowReactive 的淺層響應式

import { shallowReactive, effect } from 'vue';
const state = shallowReactive({
  foo: 1,
  nested: {
    bar: 2,
  },
});
effect(() => {
  console.log('nested.bar changed:', state.nested.bar); // 非響應式
});
state.nested.bar = 20; // 不會觸發(fā) effect

shallowReactive 只將頂層屬性轉換為響應式,嵌套屬性保持不變。

5. shallowRef 與 ref 的對比

ref 的深度響應式

import { ref, effect } from 'vue';
const count = ref({
  value: 1,
});
effect(() => {
  console.log('count.value changed:', count.value.value); // 響應式
});
count.value.value = 10; // 觸發(fā) effect

ref 會將 .value 及其內部屬性都轉換為響應式。

shallowRef 的淺層響應式

import { shallowRef, effect } from 'vue';
const count = shallowRef({
  value: 1,
});
effect(() => {
  console.log('count.value changed:', count.value.value); // 非響應式
});
count.value.value = 10; // 不會觸發(fā) effect
count.value = { value: 20 }; // 觸發(fā) effect

shallowRef 只將 .value 本身轉換為響應式,內部屬性保持不變。

6. 使用場景總結

shallowReactive

  • 適用于只需要頂層屬性響應式的對象。
  • 例如:表單數據的頂層字段。

shallowRef

  • 適用于只需要 .value 響應式的引用。
  • 例如:DOM 元素的引用或不需要深度監(jiān)聽的對象。

7. 注意事項

性能優(yōu)化

shallowReactive 和 shallowRef 可以減少不必要的響應式轉換,從而提高性能。

嵌套對象的響應性

如果需要嵌套對象的響應性,應該使用 reactive 或 ref。

.value 的使用:

shallowRef 的 .value 是響應式的,但 .value 內部的屬性不是響應式的。

8. 總結

  • shallowReactive 和 shallowRef 是 Vue 3 提供的淺層響應式 API。
  • shallowReactive 只將對象的頂層屬性轉換為響應式。
  • shallowRef 只將 .value 本身轉換為響應式。
  • 它們適用于需要優(yōu)化性能或不需要深度響應式的場景。

通過合理使用 shallowReactive 和 shallowRef,可以在保證功能的同時優(yōu)化 Vue 應用的性能。

到此這篇關于vue3.x 的shallowReactive 與 shallowRef 詳細解讀的文章就介紹到這了,更多相關vue3.x 的shallowReactive 與 shallowRef 詳細解讀內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 基于vue2實現一個日歷組件

    基于vue2實現一個日歷組件

    最近在做一個類似課程表的需求,需要自制一個日歷來支持功能及展現,就順便研究一下應該怎么開發(fā)日歷組件,下面這篇文章主要給大家介紹了關于如何基于vue2實現一個日歷組件的相關資料,需要的朋友可以參考下
    2022-12-12
  • vue-i18n結合Element-ui的配置方法

    vue-i18n結合Element-ui的配置方法

    這篇文章主要介紹了vue-i18n結合Element-ui的配置方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • vue2.0 與 bootstrap datetimepicker的結合使用實例

    vue2.0 與 bootstrap datetimepicker的結合使用實例

    本篇文章主要介紹了vue2.0 與 bootstrap datetimepicker的結合使用實例,非常具有實用價值,需要的朋友可以參考下
    2017-05-05
  • vue適配屏幕分辨率,以及屏幕的縮放方式

    vue適配屏幕分辨率,以及屏幕的縮放方式

    這篇文章主要介紹了vue適配屏幕分辨率,以及屏幕的縮放方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Vue.JS入門教程之列表渲染

    Vue.JS入門教程之列表渲染

    這篇文章主要為大家詳細介紹了Vue.JS入門教程之列表渲染,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • vue路由守衛(wèi)易錯點實戰(zhàn)

    vue路由守衛(wèi)易錯點實戰(zhàn)

    文章主要討論了Vue?Router路由守衛(wèi)中的常見錯誤,包括使用錯誤的守衛(wèi)(beforeEnter與beforeRouteLeave混淆)、錯誤的時機判斷、忽略守衛(wèi)層級順序、未處理異步邏輯和臟狀態(tài)等問題,并并提供了常見問題例及解決辦法,強調了要正確理解守衛(wèi)的作用和時機
    2026-05-05
  • Vue?export?default中的name屬性有哪些作用

    Vue?export?default中的name屬性有哪些作用

    這篇文章主要介紹了Vue?export?default中的name屬性有哪些作用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Vue中mixin和extends的使用方法詳解

    Vue中mixin和extends的使用方法詳解

    當我們談論Vue的組件擴展時,經常會遇到mixin和extends這兩個關鍵詞,它們提供了一種有效的方式來共享和重用組件邏輯,本文將深入探討Vue中mixin和extends的使用方法,并詳細探討它們的覆蓋邏輯,以便你在實際項目中能夠更好地應用它們
    2023-08-08
  • Vue自定義省市區(qū)三級聯(lián)動

    Vue自定義省市區(qū)三級聯(lián)動

    這篇文章主要為大家詳細介紹了Vue自定義省市區(qū)三級聯(lián)動,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 詳解vue修改elementUI的分頁組件視圖沒更新問題

    詳解vue修改elementUI的分頁組件視圖沒更新問題

    這篇文章主要介紹了詳解vue修改elementUI的分頁組件視圖沒更新問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11

最新評論

铜山县| 和林格尔县| 新巴尔虎左旗| 伊吾县| 洪江市| 湖南省| 正宁县| 阳原县| 高雄县| 博爱县| 紫阳县| 武威市| 黎川县| 云龙县| 灯塔市| 林周县| 罗城| 游戏| 三台县| 乐安县| 辽宁省| 阳春市| 天峻县| 安庆市| 贵定县| 贵南县| 麻城市| 台山市| 紫阳县| 镇坪县| 蒲江县| 汽车| 阿拉善左旗| 灌阳县| 泸西县| 凌云县| 和政县| 盐池县| 商城县| 宁波市| 台湾省|