vue強(qiáng)制刷新組件的方法示例
前言:
在開發(fā)過程中,有時(shí)候會(huì)遇到這么一種情況,通過動(dòng)態(tài)的賦值,但是dom沒有及時(shí)更新,能夠獲取到動(dòng)態(tài)賦的值,但是無法獲取到雙向綁定的dom節(jié)點(diǎn),這就需要我們手動(dòng)進(jìn)行強(qiáng)制刷新組件。
官網(wǎng)是這樣說的:

可能你還不大理解,請繼續(xù)往下看,下面是我的一個(gè)例子,來詳細(xì)解說了這個(gè)方法的使用,

第一個(gè)打印結(jié)果

第二個(gè)打印結(jié)果

一、問題描述:父組件通過v-for渲染子組件,刪除子組件數(shù)據(jù)出現(xiàn)異常。
<code class="language-plain"><section v-if="isrefresh" v-for="(sign,index) in signs"> <sign-card></sign-card> </section></code>
二、問題原因:出現(xiàn)異常的數(shù)據(jù)不是響應(yīng)式依賴,是從vuex讀取的。通過測試發(fā)現(xiàn),父組件刪除數(shù)據(jù),沒有重新創(chuàng)建子組件,懷疑是子組件異常的數(shù)據(jù)是讀取的緩存副本。
三、問題解決:根據(jù)v-if改變dom結(jié)構(gòu)的特性,手動(dòng)使子組件重新創(chuàng)建。
1.設(shè)置一個(gè)數(shù)據(jù)變量isrefresh=true

2.初始v-if=isrefresh

3.刪除時(shí),配合$nextTick()DOM渲染回調(diào)函數(shù),使子組件重新創(chuàng)建

/************************************************************************************************************************************/
PS:vue 強(qiáng)制刷新子組件
把一個(gè)組件重置到初始狀態(tài)是一個(gè)常見的需求,推薦的做法有兩種,一種是父組件重置子組件的 prop,另一種是子組件暴露一個(gè)重置的方法供父組件調(diào)用。但有些時(shí)候,子組件既沒有提供重置的方法,也沒提供 prop 來重置自己的狀態(tài)。更重要的是,這個(gè)子組件我們還動(dòng)不了。于是我們就需要一種 hack 的方式來強(qiáng)制子組件重置到初始狀態(tài)。方法如下:
// 原理就是:采用v-if會(huì)銷毀組件并且重繪,這樣就會(huì)重載組件
// 子組件:自己封裝的組件
<IncomeStatistics v-if="DestroyIncomeStatistics == true"
ref="IncomeStatisticsChild"></IncomeStatistics>
// 然后再父組件內(nèi)的增刪改查方法中操作,就好了
this.DestroyIncomeStatistics = false;
// 然后你的方法成功后
// Vue 實(shí)現(xiàn)響應(yīng)式并不是數(shù)據(jù)發(fā)生變化之后 DOM 立即變化,而是按一定的策略進(jìn)行 DOM 的更新。
// 在vue的深入響應(yīng)式原理中有解釋:
// $nextTick 是在下次 DOM 更新循環(huán)結(jié)束之后執(zhí)行延遲回調(diào),在修改數(shù)據(jù)之后使用 $nextTick,則可以在回調(diào)中獲取更新后的 DOM
this.$nextTick(() => {
this.DestroyIncomeStatistics = true;
});
//這樣的話就會(huì)完成強(qiáng)制刷新以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue3使用transition實(shí)現(xiàn)組件切換的過渡效果
<Transition> 是一個(gè)內(nèi)置組件,這意味著它在任意別的組件中都可以被使用,無需注冊,它可以將進(jìn)入和離開動(dòng)畫應(yīng)用到通過默認(rèn)插槽傳遞給它的元素或組件上,本文介紹了Vue3使用transition實(shí)現(xiàn)組件切換的過渡效果,需要的朋友可以參考下2024-09-09
Vue Router動(dòng)態(tài)路由使用方法總結(jié)
這篇文章主要介紹了Vue Router動(dòng)態(tài)路由使用方法總結(jié),需要的朋友可以參考下2023-10-10
vue實(shí)現(xiàn)excel表格的導(dǎo)入導(dǎo)出的示例
本文主要介紹了vue實(shí)現(xiàn)excel表格的導(dǎo)入導(dǎo)出的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
Vue Element-ui實(shí)現(xiàn)樹形控件節(jié)點(diǎn)添加圖標(biāo)詳解
這篇文章主要為大家介紹了Element-ui實(shí)現(xiàn)樹形控件節(jié)點(diǎn)添加圖標(biāo),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2021-11-11
vue webpack打包后圖片路徑錯(cuò)誤的完美解決方法
這篇文章主要介紹了vue webpack打包后圖片路徑錯(cuò)誤的解決方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-12-12
Vue 實(shí)現(xiàn)列表動(dòng)態(tài)添加和刪除的兩種方法小結(jié)
今天小編就為大家分享一篇Vue 實(shí)現(xiàn)列表動(dòng)態(tài)添加和刪除的兩種方法小結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09

