AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

[Vue 3] 為什么需要同時使用 Ref 和 Reactive

來源: 責編: 時間:2023-08-09 23:02:05 369觀看
導讀AICube 開放GPT-4給大家使用以及AI工具助手,可以簡化大家生圖的的prompt。在使用 Options API 工作時聲明響應性數據是直截了當的。data 選項內的所有內容都會自動變為響應性,并在模板中可用。唯一需要注意的是,要將data

wO828資訊網——每日最新資訊28at.com

AICube 開放GPT-4給大家使用以及AI工具助手,可以簡化大家生圖的的prompt。wO828資訊網——每日最新資訊28at.com

在使用 Options API 工作時聲明響應性數據是直截了當的。data 選項內的所有內容都會自動變為響應性,并在模板中可用。唯一需要注意的是,要將data設為一個函數,以防止在所有組件實例之間共享狀態。wO828資訊網——每日最新資訊28at.com

讓我們討論一下Vue 3中發生了什么變化,以及為什么我們需要兩個不同的助手。wO828資訊網——每日最新資訊28at.com

Vue 2中的響應性

data 組件選項內的每個屬性都將通過 Object.defineProperty 轉換為getter/setter。這些getter/setter對我們來說是看不見的,但在底層,它們使Vue在訪問或修改屬性時能夠執行依賴跟蹤。wO828資訊網——每日最新資訊28at.com

每個組件都有一個關聯的觀察者,用于跟蹤在組件的渲染周期中使用的屬性。如果依賴項更新,觀察者會通知組件,然后觸發重新渲染。wO828資訊網——每日最新資訊28at.com

Vue 3中的響應性

在 Vue 3 中,一切都發生了變化。核心部分從零開始重寫,現在由Javascript Proxies提供響應性。Proxies是一種現代且優雅的方式來觀察一個對象并在其屬性被訪問或更新時得到通知。wO828資訊網——每日最新資訊28at.com

可以通過以下簡單的例子來理解代理是如何工作的:wO828資訊網——每日最新資訊28at.com

const userInfo = {  firstName: "fotis",  age: 35,};const handler = {  get(target, property) {    if (property === "firstName") {      const name = target[property]      return name.charAt(0).toUpperCase() + name.slice(1);    }    if (property === "age") {      return '--'    }    return target[property]  },};const proxy = new Proxy(userInfo, handler);console.log(proxy.firstName) // "Fotis"console.log(proxy.age) // "--"

處理器內部的get方法被稱為陷阱,每次訪問對象的屬性時都會被調用。以類似的方式,可以定義一個設定的陷阱:wO828資訊網——每日最新資訊28at.com

const userInfo = {  firstName: "Fotis",  age: 35,};const handler = {  set(target, prop, value) {    if (prop === "age") {      if (!Number.isInteger(value)) {        throw new TypeError("The age is not an integer");      }      if (value > 200) {        throw new RangeError("The age seems invalid");      }    }    target[prop] = value;    return true;  },};const proxy = new Proxy(userInfo, handler);proxy.age = 12 // OKproxy.age = 300 // Error: The age seems invalid

這正是 Vue 3 響應性背后的理念。當使用 reactive 助手聲明一個變量時,會使用一個 proxy. 來跟蹤任何變化。wO828資訊網——每日最新資訊28at.com

function reactive(obj) {  return new Proxy(obj, {    get(target, key) {      track(target, key)      return target[key]    },    set(target, key, value) {      target[key] = value      trigger(target, key)    }  })}

當然,響應式助手的實際實現更為復雜,能處理邊緣情況,但其核心仍然使用proxy。wO828資訊網——每日最新資訊28at.com

以上的片段解釋了為什么將響應性變量解構或重新分配給本地變量后,它就不再具有反應性,因為它不再觸發源對象上的 get/set proxy  陷阱。wO828資訊網——每日最新資訊28at.com

這看起來像是一個完美的解決方案,可以使所有事物都變成響應式。但是有個問題!根據定義,proxy只適用于復雜類型。這些包括對象、數組、映射和集合。要使一個原始類型變得反應靈敏,我們仍然需要使用代理,但首先我們必須將其包裝在一個對象中。wO828資訊網——每日最新資訊28at.com

function ref(value) {  const refObject = {    get value() {      track(refObject, 'value')      return value    },    set value(newValue) {      value = newValue      trigger(refObject, 'value')    }  }  return refObject}

這解釋了為什么必須在 script setup 中使用煩人的 .value 。而且,再次重構或重新分配給本地變量也是行不通的。wO828資訊網——每日最新資訊28at.com

總結

那么,為什么需要 Ref 和 Reactive 的答案是:Proxy。對于復雜類型,它們可以直接使用,但對于原始類型,需要創建一個代理對象。wO828資訊網——每日最新資訊28at.com

本文轉載自微信公眾號「大遷世界」,可以通過以下二維碼關注。轉載本文請聯系大遷世界公眾號。wO828資訊網——每日最新資訊28at.com

wO828資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-5099-0.html[Vue 3] 為什么需要同時使用 Ref 和 Reactive

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 微軟發布.NET 8 最終預覽版,正式版計劃 11 月 14 日發布

下一篇: 如何優雅地處理RabbitMQ中的消息丟失

標簽:
  • 熱門焦點
  • MIX Fold3包裝盒泄露 新機本月登場

    小米的全新折疊屏旗艦MIX Fold3將于本月發布,近日該機的真機包裝盒在網上泄露。從圖上來看,新的MIX Fold3包裝盒在外觀設計方面延續了之前的方案,變化不大,這也是目前小米旗艦
  • 一年經驗在二線城市面試后端的經驗分享

    忠告這篇文章只適合2年內工作經驗、甚至沒有工作經驗的朋友閱讀。如果你是2年以上工作經驗,請果斷劃走,對你沒啥幫助~主人公這篇文章內容來自 「升職加薪」星球星友 的投稿,坐
  • 三分鐘白話RocketMQ系列—— 如何發送消息

    我們知道RocketMQ主要分為消息 生產、存儲(消息堆積)、消費 三大塊領域。那接下來,我們白話一下,RocketMQ是如何發送消息的,揭秘消息生產全過程。注意,如果白話中不小心提到相關代
  • 10天營收超1億美元,《星鐵》比《原神》差在哪?

    來源:伯虎財經作者:陳平安即便你沒玩過《原神》,你一定聽說過的它的大名。恨它的人把《原神》開服那天稱作是中國游戲史上最黑暗的一天,有粉絲因為索尼在PS平臺上線《原神》,怒而
  • ESG的面子與里子

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之三伏大幕拉起,各地高溫預警不絕,但處于厄爾尼諾大“烤”之下的除了眾生,還有各大企業發布的ESG報告。ESG是“環境保
  • OPPO、vivo、小米等國內廠商Q2在印度智能手機市場份額依舊高達55%

    7月20日消息,據外媒報道,研究機構的報告顯示,在全球智能手機出貨量同比仍在下滑的大背景下,印度這一有潛力的市場也未能幸免,出貨量同比也有下滑,多家廠
  • 7月4日見!iQOO 11S官宣:“雞血版”驍龍8 Gen2+200W快充加持

    上半年已接近尾聲,截至目前各大品牌旗下的頂級旗艦都已悉數亮相,而下半年即將推出的頂級旗艦已經成為了數碼圈爆料的主流,其中就包括全新的iQOO 11S系
  • 朋友圈可以修改可見范圍了 蘋果用戶可率先體驗

    近日,iOS用戶迎來微信8.0.27正式版更新,除了可更換二維碼背景外,還新增了多項實用功能。在新版微信中,朋友圈終于可以修改可見范圍,簡單來說就是已發布的朋友圈
  • 2022爆款:ROG魔霸6 冰川散熱系統持續護航

    喜逢開學季,各大商家開始推出自己的新產品,進行打折促銷活動。對于忠實的端游愛好者來說,能夠擁有一款夢寐以求的筆記本電腦是一件十分開心的事。但是現在的
Top