国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

202 vue2的響應式原理 通俗易懂!

這篇具有很好參考價值的文章主要介紹了202 vue2的響應式原理 通俗易懂!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、vue2的響應式原理?

1.1、前言

Object.defineProperty+依賴追蹤。

在Vue實例化過程中,會遞歸地將每個數(shù)據(jù)對象屬性轉換為getter/setter,并維護一個依賴收集器(Dep)。每個屬性都有一個關聯(lián)的watcher,當數(shù)據(jù)發(fā)生變化時watcher被通知更新視圖。

Vue 2.x 實現(xiàn)響應式數(shù)據(jù):

<div id="app">
  <p>{{ message }}</p>
  <button @click="updateMessage">Update Message</button>
  </div>
const app = new Vue({
  el: '#app',
  data: {
    message: 'Hello, Vue!'
  },
  methods: {
    updateMessage() {
      this.message = 'Hello, World!';
    }
  }
});

vue實例化時,會將message屬性轉換為 getter/setter,并添加到依賴收集器中。當屬性值變化時,依賴收集器通知相關的watcher更新視圖。

1.2、如何轉為getter/setter

在 Vue2.X 中,可以使用 Object.defineProperty() 將屬性轉換為 getter/setter。這個方法接收三個參數(shù):對象、屬性名稱和一個描述符對象

示例代碼:

/*
 * @Description:
 * @Author: muge
 * @Date: 2022-10-03 12:01:03
 * @LastEditors: muge
 * @LastEditTime: 2023-05-20 14:33:35
 */
var obj = {}; // 創(chuàng)建一個空對象
// 定義一個屬性 name,并將其轉換為 getter/setter
Object.defineProperty(obj, "name", {
  get: function () {
    console.log("獲取 name 屬性");
    return this._name;
  },
  set: function (value) {
    console.log("設置 name 屬性為", value);
    this._name = value;
  },
});
// 使用屬性
obj.name = "muge"; // 調(diào)用 setter
console.log(obj.name); // 調(diào)用 getter,打印 'muge'

我們將 obj 對象的 name 屬性轉換為 getter/setter。當獲取 name 屬性時,get() 方法會被調(diào)用。當設置 name 屬性時,set() 方法會被調(diào)用。

1.3、為什么Vue 2.x只能追蹤對象屬性的變化,無法直接追蹤數(shù)組的變化?

1.3.1、前言

因為數(shù)組的屬性名是數(shù)字,內(nèi)置方法(如 push、pop、splice 等)可以改變數(shù)組長度或元素值等。導致無法對數(shù)組進行有效監(jiān)聽,使得數(shù)組的數(shù)據(jù)變化無法自動觸發(fā)視圖更新。

如 push 方法添加元素,可以改變數(shù)組的長度,但不會觸發(fā)對應下標的 setter 方法

1.3.2、解決

使用Vue 提供的$set、$delete 等數(shù)組方法。文章來源地址http://www.zghlxwxcb.cn/news/detail-456892.html

到了這里,關于202 vue2的響應式原理 通俗易懂!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • vue2、vue3、react響應式原理、組件聲明周期闡述與對比

    響應式原理: Vue.js 的響應式原理是通過使用 Object.defineProperty 函數(shù)來實現(xiàn)的。在 Vue.js 中,當一個對象被傳入 Vue 實例的 data 選項中時,Vue.js 會將這個對象的屬性轉換為 getter 和 setter,以便在屬性被訪問或修改時能夠觸發(fā)相應的更新。 具體來說,Vue.js 會在實例化過程中遞歸

    2024年02月06日
    瀏覽(23)
  • 通俗易懂的GPT原理簡介

    通俗易懂的GPT原理簡介

    ? ? ? ? GPT是自然語言處理領域中最受歡迎的模型之一。GPT全稱為Generative Pre-trained Transformer,是一種基于Transformer模型的預訓練語言模型。在接下來的文章中,我們將詳細介紹GPT的原理。 ? ? ? ? 在了解GPT原理之前,需要了解以下一些基礎知識: 1.自然語言處理:自然語言處

    2024年02月05日
    瀏覽(39)
  • 最通俗易懂的講解HTTPS的加密原理【多圖、易懂】

    最通俗易懂的講解HTTPS的加密原理【多圖、易懂】

    目錄 前言 HTTPS加密原理概述 HTTP 為什么不安全 安全通信的四大原則 HTTPS 通信原理 對稱加密:HTTPS 的最終加密形式 非對稱加密:解決單向的對稱密鑰的傳輸問題 數(shù)字證書:解決公鑰傳輸信任問題 證書一整個被掉包怎么辦? 總結 其它 HTTPS 相關問題 什么是雙向認證? 什么是

    2024年02月05日
    瀏覽(21)
  • 通俗易懂的ChatGPT的原理簡介

    通俗易懂的ChatGPT的原理簡介

    ? ? ? 本文介紹了ChatGPT的原理及應用。ChatGPT是基于GPT模型的自然語言處理技術,可以進行語言理解、文本生成、對話生成等多種應用。其基本原理是通過訓練大規(guī)模語料庫中的數(shù)據(jù),生成模型,從而實現(xiàn)自然語言處理的任務。本文著重介紹了ChatGPT的訓練方法和應用場景,并

    2023年04月19日
    瀏覽(22)
  • 數(shù)據(jù)結構:Mysql索引原理(通俗易懂)

    數(shù)據(jù)結構:Mysql索引原理(通俗易懂)

    在工作中如果經(jīng)常寫業(yè)務代碼,說白了就是CURD,比如做一個查詢功能,我們會將前端參數(shù)傳遞到后端后拼接SQL查詢數(shù)據(jù),那為了提高用戶體驗,查詢速度肯定是越快越好,這就要求我們能夠?qū)QL調(diào)優(yōu),讓查詢速度更快。 由于數(shù)據(jù)需要持久化,且數(shù)據(jù)量龐大,所以只能將數(shù)據(jù)

    2024年02月11日
    瀏覽(22)
  • 通俗易懂生成對抗網(wǎng)絡GAN原理(二)

    通俗易懂生成對抗網(wǎng)絡GAN原理(二)

    學習李宏毅機器學習課程總結。 前面學習了GAN的直觀的介紹,現(xiàn)在學習GAN的基本理論?,F(xiàn)在我們來學習GAN背后的理論。 假設x是一張圖片(一個高維向量),如64 * 64 * 3的圖片,每個圖片都是高維空間中的一個點。為了畫圖方便,我們就畫成二維上的點。在高維空間中,只有

    2024年02月12日
    瀏覽(23)
  • JVM原理:JVM運行時內(nèi)存模型(通俗易懂)

    JVM原理:JVM運行時內(nèi)存模型(通俗易懂)

    做了幾年開發(fā),平時除了寫代碼造BUG和修復BUG之外,偶爾也會遇到反饋說程序較慢問題,要對程序性能排查與優(yōu)化就得更深入學習,學習JVM可以幫助我們加深對JAVA的理解,讓我們具備一定的性能排查與調(diào)優(yōu)的能力,無非就是讓程序別太卡或者別掛了,那掛了目前我遇到的主要

    2024年02月08日
    瀏覽(34)
  • 用通俗易懂的方式講解:CatBoost 算法原理及案例

    用通俗易懂的方式講解:CatBoost 算法原理及案例

    前面已講了7節(jié),為方便大家學習,我總結在一起,無論是日常實踐還是面試使用,都非常方便,喜歡記得收藏 用通俗易懂的方式講解:邏輯回歸模型及案例(Python 代碼) 用通俗易懂的方式講解:決策樹模型及案例(Python 代碼) 用通俗易懂的方式講解: 隨機森林及案例(

    2024年04月12日
    瀏覽(27)
  • 【通俗易懂】git原理、安裝及連接gitlab,github

    【通俗易懂】git原理、安裝及連接gitlab,github

    目錄 一、GIT原理【這部分也挺簡單,可以看看,如果沒時間可以直接跳到第二部分】 SVN與Git的的區(qū)別 二、安裝Git? ?2.1?獲取Git安裝程序 2.2 Git安裝過程 三、Git連接Gitlab 3.1 gitlab準備工作 3.2 本地計算機準備工作及配置git? ?四、Git連接Github Git 是一種分布式版本控制系統(tǒng),用

    2024年02月22日
    瀏覽(28)
  • Vue中的MVVM模型(通俗易懂版)

    Vue中的MVVM模型(通俗易懂版)

    MVVM是Model-View-ViewModel的簡寫,是M - V - VM 三部分組成。 本質(zhì):是MVC改進版 MVVM就是將其中View的狀態(tài)和行為抽象化,其中ViewModel將試圖(即View)和業(yè)務邏輯分開,它可以去除Model的數(shù)據(jù)的同時幫忙處理View中由于需要展示內(nèi)容而涉及的業(yè)務邏輯。 MVVM采用: 雙向數(shù)據(jù)綁定。 View中

    2023年04月26日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包