最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何手動銷毀Vue中掛載的組件

 更新時間:2022年08月09日 10:39:43   作者:云中客youroch  
這篇文章主要介紹了如何手動銷毀Vue中掛載的組件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

手動銷毀Vue掛載的組件

因為很多頁面需要用到<keep-alive>,我就用其將承載頁面的父組件包裹了,但這也帶來了一些問題。比如新寫的頁面中,進入下個頁面還在調用上個頁面的數(shù)據(jù)(以前沒有遇到過,不清楚是是什么原因),即已經切換路由卻無法自己destory掉,打日志發(fā)現(xiàn)確實沒有跑destoryed這個生命周期函數(shù)。

如何解決

在需要刪除的組件中的deactivated生命周期函數(shù)中手動調用this.$destroy('componentName'),這里的componentName即這個組件的name,使用后發(fā)現(xiàn)destoryed函數(shù)確實可以正常使用了,而且進入下一個頁面也不會再報錯說缺少這個頁面的數(shù)據(jù)。

vue 銷毀實例

1.導入vue創(chuàng)建一個VM實例

傳入配置對象,了解配置對象中的各個屬性

var VM = new Vue({ el: '#app', // 表示當我們new的這個Vue實例, 要控制頁面上的那個區(qū)域?
data: { // data屬性中,存放的是el中要用到的數(shù)據(jù),這里的data就是MVVM中的M專門用來保存每個頁面的數(shù)據(jù) message: 'Hello Vue!' },?
methods : {}, // 這個methods屬性中定義了當前Vue實例所有可用的方法,主要寫業(yè)務邏輯?
computed: {}, // 在computed中,可以定一些屬性, 這些屬性叫做計算屬性,計算屬性的本質就是一個方法,只不過我們在使用這些計算屬性的時候是吧它們的名稱直接當做屬性來使用的,并不會把計算屬性當做方法去調用?
filters : {}, // 這個filters屬性中定義了當前Vue實例中所有可用的過濾的方法?
watch: {}, // 使用這個屬性,可以監(jiān)聽data中數(shù)據(jù)的變化,然后觸發(fā)這個watch中對應的function處理函數(shù) router, // 掛載路由對象?
directives:{}, // 這個directives屬性定義了當前Vue實例中所有可用的自定義指令 beforeCreate () {}, // 生命周期函數(shù): 表示實例完全被創(chuàng)建之前,會執(zhí)行這個函數(shù)?
created () {}, // 生命周期函數(shù): 表示實例被創(chuàng)建之后?
beforeMounted () {}, // 生命周期函數(shù): 表示模板已經編譯完成,但是還沒有把模板渲染到頁面中?
mounted () {}, // 生命周期函數(shù):表示模板已經編譯完成,內存中的模板已經真實的渲染到了頁面中去,已經可以看到渲染好的頁面了?
beforeUpdate () {}, // 生命周期函數(shù): 表示當前界面還沒有被更新,數(shù)據(jù)肯定被更新了?
update () {}, // 生命周期函數(shù): 表示當前頁面和數(shù)據(jù)保持同步了,都是最新的?
beforeDestroy () {}, // 生命周期函數(shù): 表示Vue實例已經從運行階段進入到銷毀階段?
destroyed () {} // 生命周期函數(shù): 表示組件已經完全被銷毀了})

2.vm.$destroy()只能銷毀實例里的方法但不能清除DOM和data嗎?

destroy()只是完全銷毀一個實例,清理它與其它實例的連接,解綁它的全部指令及事件監(jiān)聽器。

參見官方文檔: https://cn.vuejs.org/v2/api/#vm-destroy

它并不是用來清除已有頁面上的DOM的。實現(xiàn)功能包括:

(1) 包括Watcher對象從其所在Dep中釋放

if (vm._watcher) {
? vm._watcher.teardown()
}
let i = vm._watchers.length
while (i--) {
? vm._watchers[i].teardown()
}
// remove reference from data ob
// frozen object may not have observer.
if (vm._data.__ob__) {
? vm._data.__ob__.vmCount--
}

(2) 移除所有事件的監(jiān)聽

vm.$off()

(3) patch一個null目的是觸發(fā)所有的destroy鉤子。

vm.__patch__(vm._vnode, null)
return function patch (oldVnode, vnode, hydrating, removeOnly, parentElm, refElm) {
? ? /*vnode不存在則直接調用銷毀鉤子*/
? ? if (isUndef(vnode)) {
? ? ? if (isDef(oldVnode)) invokeDestroyHook(oldVnode)
? ? ? return
? ? }
? ? ...
?}

想要清除頁面的 DOM,需要使用 v-if,或者修改 v-for 中涉及到的數(shù)組或對象。

另外,調用 app.$destroy() 之后,你會發(fā)現(xiàn),app.message = ‘Yes, he is a boy.’ 不會對頁面產生影響。 

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。 

相關文章

  • vue實現(xiàn)ToDoList簡單實例

    vue實現(xiàn)ToDoList簡單實例

    這篇文章主要為大家詳細介紹了vue實現(xiàn)ToDoList簡單實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Vite配置路徑別名的簡單實現(xiàn)方法

    Vite配置路徑別名的簡單實現(xiàn)方法

    Vite項目中我們可以手動將src路徑設置**@**路徑別名,可以省下很多引入路徑的冗余路徑,下面這篇文章主要給大家介紹了關于Vite配置路徑別名的簡單實現(xiàn)方法,需要的朋友可以參考下
    2023-04-04
  • vue常用知識點整理

    vue常用知識點整理

    Vue是一套用于構建用戶界面的漸進式JavaScript框架。這篇文章整理了vue中的常用知識點,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • Vue 組件注冊全解析

    Vue 組件注冊全解析

    這篇文章主要介紹了Vue 組件注冊全解析的相關資料,幫助大家更好的理解和使用vue,感興趣的朋友可以了解下
    2020-12-12
  • 詳解keep-alive + vuex 讓緩存的頁面靈活起來

    詳解keep-alive + vuex 讓緩存的頁面靈活起來

    這篇文章主要介紹了keep-alive + vuex 讓緩存的頁面靈活起來,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • vue.js基于ElementUI封裝了CRUD的彈框組件

    vue.js基于ElementUI封裝了CRUD的彈框組件

    這篇文章主要介紹了vue.js基于ElementUI封裝了CRUD的彈框組件,問咋會給你圍繞主題展開詳細的內容介紹,感興趣的小伙伴可以參考一下
    2022-07-07
  • vue3組件庫添加腳本的實現(xiàn)示例

    vue3組件庫添加腳本的實現(xiàn)示例

    本文主要介紹了vue3組件庫添加腳本的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-06-06
  • vue+electron實現(xiàn)創(chuàng)建多窗口及窗口間的通信(實施方案)

    vue+electron實現(xiàn)創(chuàng)建多窗口及窗口間的通信(實施方案)

    這篇文章主要介紹了vue+electron實現(xiàn)創(chuàng)建多窗口及窗口間的通信,本文給大家分享實施方案結合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • vue draggable resizable 實現(xiàn)可拖拽縮放的組件功能

    vue draggable resizable 實現(xiàn)可拖拽縮放的組件功能

    這篇文章主要介紹了vue draggable resizable 實現(xiàn)可拖拽縮放的組件功能,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • vue父子組件通信的高級用法示例

    vue父子組件通信的高級用法示例

    這篇文章主要給大家介紹了關于vue父子組件通信的高級用法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用vue具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08

最新評論

乌鲁木齐县| 海安县| 峨眉山市| 上犹县| 石门县| 云南省| 平利县| 太谷县| 新巴尔虎右旗| 旬邑县| 马尔康县| 凭祥市| 贵德县| 民权县| 台山市| 汕尾市| 鸡东县| 昭苏县| 辛集市| 威远县| 民县| 上高县| 徐水县| 安顺市| 济源市| 灵宝市| 吉安县| 卓资县| 汕头市| 南宫市| 佛山市| 南安市| 改则县| 惠来县| 景宁| 韩城市| 泗洪县| 南岸区| 兰坪| 荣昌县| 贺兰县|