寫在前面
把一個組件重置到初始狀態是一個常見的需求,推薦的做法有兩種,一種是父組件重置子組件的 prop,另一種是子組件暴露一個重置的方法供父組件調用。但有些時候,子組件既沒有提供重置的方法,也沒提供 prop 來重置自己的狀態。更重要的是,這個子組件我們還動不了。于是我們就需要一種 hack 的方式來強制子組件重置到初始狀態。方法如下:
// 原理就是:采用v-if會銷毀組件并且重繪,這樣就會重載組件
// 子組件:自己封裝的組件
<IncomeStatistics v-if="DestroyIncomeStatistics == true"
ref="IncomeStatisticsChild"></IncomeStatistics>
// 然后再父組件內的增刪改查方法中操作,就好了
this.DestroyIncomeStatistics = false;
// 然后你的方法成功后
// Vue 實現響應式并不是數據發生變化之后 DOM 立即變化,而是按一定的策略進行 DOM 的更新。
// 在vue的深入響應式原理中有解釋:
// $nextTick 是在下次 DOM 更新循環結束之后執行延遲回調,在修改數據之后使用 $nextTick,則可以在回調中獲取更新后的 DOM
this.$nextTick(() => {
this.DestroyIncomeStatistics = true;
});
//這樣的話就會完成強制刷新
總結一下:還是要不斷學習,才會有進步,思維很重要。