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

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

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
主站蜘蛛池模板: 欧美穿高跟鞋做爰 | 含羞草传媒网站免费进入欢迎 | 四虎tv| 日本四虎影院 | 国产香蕉一区二区精品视频 | 糖心在线观看 | 成人国产在线观看 | 日韩精品欧美 | 日韩毛片基地一区二区三区 | 色综合亚洲精品激情狠狠 | 99这里只有精品66视频 | 性柔术18性13处交 | a免费看 | 草草视频免费在线观看 | 91美女在线 | 久久理论片迅播影院一级 | 欧美日本一道高清二区三区 | 干b视频在线观看 | 欧美日韩精品一区二区三区视频 | 国产成+人+综合+亚洲欧美丁香花 | 调教麻麻成贱m | 穆挂英风流艳史小说 | 精品视频在线播放 | 日本高清在线播放 | 动漫美女被羞羞产奶 | 亚洲成年网站在线观看 | 蜜桃久久久亚洲精品成人 | 小鸟酱在线看 | 久久香蕉电影 | 日韩欧美一区二区三区中文精品 | 手机看片一区二区 | 美女被吸乳老师羞羞漫画 | 精品久久久久久综合网 | 午夜福利试看120秒体验区 | 欧美成a人片免费看久久 | 精品卡1卡2卡三卡免费视频 | 欧美一级片在线免费观看 | 都市后宫小说 | 操碰免费视频 | 2020国产精品永久在线观看 | 白丝h视频 |