一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - vue.js - vue中data改變后讓視圖同步更新的方法

vue中data改變后讓視圖同步更新的方法

2022-02-21 16:54TGuoW vue.js

這篇文章主要給大家介紹了關于vue中data改變后讓視圖同步更新的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

不久前天看到一個比較有趣的問題,vue中data改變后,如何讓視圖同步更新,搜索了一下,并沒有發現解決問題的方法,只能從源碼去找解決方法了。

原因

我們都知道,在vue中改變數據后,視圖并不是同步更新的。

在vue實例初始化后,會將data設置為響應式對象,當我們執行this.xxx = 1時,會觸發這個響應式對象的setter。在setter中,會觸發更新,通知所有訂閱了xxx的訂閱者。但是這個觸發更新并不是同步的,它會將所有的watcher都添加到一個隊列,并在nextTick之后去更新視圖。

這就是vue不能同步更新視圖的原因。

解決方法

知道了原因,總能找到解決方法。

既然是在nextTick的時候去更新視圖,這個時候,必然會去執行一個更新視圖的方法,那么我們手動在數據改變的時候去執行這個方法,就達到了同步更新視圖的目的。

在了解源碼后,我們可以發現執行的是watcher.run()這個方法,那么問題來了,怎么去獲取這個方法?

想快速了解這一塊建議閱讀 Vue.js技術揭秘

我們在控制臺打印一下this

vue中data改變后讓視圖同步更新的方法

可以在_watcher這個對象的原型上找到run這個方法,因此問題就解決了。

?
1
2
this.xxx = 1;
this._watcher.run()

執行以上代碼,在更新完數據后,手動更新視圖,就可以做到同步的效果。

更好的解決方法

如果每次想要視圖同步更新都要加一句 this._watcher.run() ,那豈不是太麻煩了,因此,我寫了一個插件,支持this.xxx = 1 之后就同步更新視圖。

這個插件原理很簡單,就是在組件的options里邊加了一個選項syncData,跟data是類似的,然后放入data里面,created鉤子調用的時候重新劫持這部分數據,syncData里邊數據改變的時候,自動觸發_watch.run(),從而同步更新視圖。

插件地址:GitHub地址

后記

講道理我覺得這個插件并沒有什么卵用,理論上這個插件能解決的問題$nextTick都可以解決。

到此這篇關于vue中data改變后讓視圖同步更新的方法的文章就介紹到這了,更多相關vue視圖同步更新內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://juejin.cn/post/6844904041911156750

延伸 · 閱讀

精彩推薦
  • vue.js梳理一下vue中的生命周期

    梳理一下vue中的生命周期

    看過很多人講vue的生命周期,但總是被繞的云里霧里,尤其是自學的同學,可能js的基礎也不是太牢固,聽起來更是吃力,那我就已個人之淺見,以大白話...

    CRMEB技術團隊7992021-12-22
  • vue.jsVue2.x-使用防抖以及節流的示例

    Vue2.x-使用防抖以及節流的示例

    這篇文章主要介紹了Vue2.x-使用防抖以及節流的示例,幫助大家更好的理解和學習使用vue框架,感興趣的朋友可以了解下...

    Kyara6372022-01-25
  • vue.jsVue中引入svg圖標的兩種方式

    Vue中引入svg圖標的兩種方式

    這篇文章主要給大家介紹了關于Vue中引入svg圖標的兩種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的...

    十里不故夢10222021-12-31
  • vue.js詳解vue 表單綁定與組件

    詳解vue 表單綁定與組件

    這篇文章主要介紹了vue 表單綁定與組件的相關資料,幫助大家更好的理解和學習使用vue框架,感興趣的朋友可以了解下...

    Latteitcjz6432022-02-12
  • vue.js用vite搭建vue3應用的實現方法

    用vite搭建vue3應用的實現方法

    這篇文章主要介紹了用vite搭建vue3應用的實現方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下...

    Asiter7912022-01-22
  • vue.jsVue2.x 項目性能優化之代碼優化的實現

    Vue2.x 項目性能優化之代碼優化的實現

    這篇文章主要介紹了Vue2.x 項目性能優化之代碼優化的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋...

    優小U9632022-02-21
  • vue.jsVue項目中實現帶參跳轉功能

    Vue項目中實現帶參跳轉功能

    最近做了一個手機端系統,其中遇到了父頁面需要攜帶參數跳轉至子頁面的問題,現已解決,下面分享一下實現過程,感興趣的朋友一起看看吧...

    YiluRen丶4302022-03-03
  • vue.jsVue多選列表組件深入詳解

    Vue多選列表組件深入詳解

    這篇文章主要介紹了Vue多選列表組件深入詳解,這個是vue的基本組件,有需要的同學可以研究下...

    yukiwu6752022-01-25
主站蜘蛛池模板: 欧美在线看片a免费观看 | 日韩毛片网 | 日本高清在线播放 | 青青青青青 | 亚洲一区二区精品视频 | 亚洲干综合| 日韩一级片在线免费观看 | 欧美福利在线观看 | 国产精品久久久久不卡绿巨人 | 亚洲欧美综合在线观看 | yjzz视频| 免费观看网站 | 好男人好资源在线观看 | 青青在线观看视频 | 成年极品漫画在线观看 | 国产精品xxxav免费视频 | 国产在线精品一区二区高清不卡 | 亚洲男人天堂网站 | 青青操在线播放 | 国产精品久久亚洲一区二区 | 国产一区二区三区久久精品小说 | 草莓在深夜释放自己软件 | 黑人性xxx| 美女扒开屁股让男人进去 | 北岛玲在线播放 | 免费网站看v片在线香蕉 | 女学生被老师调教在教室 | 亚洲欧美久久婷婷爱综合一区天堂 | 我的绝色岳每雯雯 | 成年人视频在线免费看 | 双性肉文h | a4yy欧美一区二区三区 | 人生路不在线观看完整版 | 男女性刺激爽爽免费视频 | 青青青青在线视频 | 国产精品日本亚洲777 | 精品一区二区高清在线观看 | 亚洲精品免费在线观看 | 成全视频在线观看免费 | 精品国产线拍大陆久久尤物 | 亚洲欧美在线免费观看 |