淺談vue單一組件下動態(tài)修改數(shù)據(jù)時(shí)的全部重渲染
今天在學(xué)習(xí)vue的過程中,發(fā)現(xiàn)一個(gè)有趣的現(xiàn)象。
在某一組件下的某一數(shù)據(jù)通過點(diǎn)擊事件被動態(tài)修改的時(shí)候,對應(yīng)view中的數(shù)據(jù)同步的進(jìn)行了修改,沒錯(cuò),這不是廢話嗎,vue的一大特色就是數(shù)據(jù)的雙向綁定。可有趣的是,該組件下我寫的另一個(gè)用Math.random()的data值對應(yīng)的值和視圖也發(fā)生了變化
這就讓我這個(gè)剛?cè)腴T的小白有點(diǎn)奇怪了,我修改一個(gè),怎么變了兩個(gè)????腦洞放開一想,會不會數(shù)據(jù)在雙向同步的時(shí)候,發(fā)生了什么,比如。是不是只要有一個(gè)節(jié)點(diǎn)變了,node都重新進(jìn)行了加載???
我想這其中的緣由必定和vue數(shù)據(jù)的雙向綁定的原理有關(guān)聯(lián),就搜索了一番,果然發(fā)現(xiàn)了些東西,就是DocumentFragment,之前好像見過,但沒怎么重視。那么它是用來干啥的呢:
DocumentFragment(文檔片段)可以看作節(jié)點(diǎn)容器,它可以包含多個(gè)子節(jié)點(diǎn),當(dāng)我們將它插入到 DOM 中時(shí),只有它的子節(jié)點(diǎn)會插入目標(biāo)節(jié)點(diǎn),所以把它看作一組節(jié)點(diǎn)的容器。使用 DocumentFragment 處理節(jié)點(diǎn),速度和性能遠(yuǎn)遠(yuǎn)優(yōu)于直接操作 DOM。
手動劃重點(diǎn):Vue 進(jìn)行編譯時(shí),就是將掛載目標(biāo)的所有子節(jié)點(diǎn)劫持(真的是劫持,通過 append 方法,DOM 中的節(jié)點(diǎn)會被自動刪除)到 DocumentFragment 中,經(jīng)過一番處理后,再將 DocumentFragment 整體返回插入掛載目標(biāo)。
以上這篇淺談vue單一組件下動態(tài)修改數(shù)據(jù)時(shí)的全部重渲染就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue中實(shí)現(xiàn)路由跳轉(zhuǎn)的三種方式超詳細(xì)教程
這篇文章主要介紹了vue中實(shí)現(xiàn)路由跳轉(zhuǎn)的三種方式超詳細(xì)教程,其中聲明式router-link實(shí)現(xiàn)跳轉(zhuǎn)最簡單的方法,可用組件router-link來替代a標(biāo)簽,每種方式給大家講解的非常詳細(xì)需要的朋友可以參考下2022-11-11vue-router中query和params的區(qū)別解析
vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用于構(gòu)建單頁面應(yīng)用,這篇文章主要介紹了vue-router中query和params的區(qū)別 ,需要的朋友可以參考下2022-10-10vue實(shí)現(xiàn)各種文件文檔下載及導(dǎo)出示例
這篇文章主要介紹了vue實(shí)現(xiàn)各種文件文檔下載及導(dǎo)出示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06