Vue 實現(xiàn)刷新當前頁面

provide/inject實現(xiàn)祖先組件向其他子孫組件注入一個值

實例 祖先組件

<template>
  <div id="app">
  <!--通過v-if顯隱控制路由重新渲染頁面實現(xiàn)刷新-->
    <router-view v-if="isRouterAlive"></router-view>
  </div>
</template>

<script>
export default {
  name: 'App',
   //向組件外暴露一個
  provide() {
    return {
      //暴露名稱 綁定的本組件屬性
      reload: this.reload
    };
  },
  data() {
    return {
      //變量
      isRouterAlive: true
    };
  },
  methods: {
    //調(diào)用reload方法控制是否渲染
    reload() { 
      //變量賦值
      this.isRouterAlive = false;
        //;值的改變使DOM重新渲染,this.$nextTick(callback)
      this.$nextTick(function() {
        this.isRouterAlive = true;
      });
    }
  }
};
</script>

this.$nextTick(callback);

官方解釋:將回調(diào)延遲到下次 DOM 更新循環(huán)之后執(zhí)行在修改數(shù)據(jù)之后立即使用它,然后等待 DOM 更新叹谁。它跟全局方法 Vue.nextTick 一樣,不同的是回調(diào)的 this 自動綁定到調(diào)用它的實例上。
個人理解:當數(shù)據(jù)或是其他因素變化引起的Dom更新時,直接讀取和使用DOM的參與變化的值,可能得到的是更新前的,DOM沒有更新完成;將要執(zhí)行的代碼放在this.$nextTick(callback)的callback中,會使其在DOM更新后執(zhí)行,確保是新數(shù)據(jù);

例: this.$nextTick(function() {
this.isRouterAlive = true;
});

子孫組件

export default {
    name: 'pickList',
    //在default下 與 data/watch/computed等同級位置注入,注入的字符串名字要與上面暴露的一致
    //然后在此組件的其他位置就可以調(diào)用了    this.reload();
    inject: ['reload'],
    computed: {
      getCancelId() {
      }
    },
    watch: {
      getCancelId(value) {
      }
    },
    data() {
      return {
       }
    }

官方建議:provide 和 inject 主要為高階插件/組件庫提供用例。并不推薦直接用于應用程序代碼中。 2.2.0 新增
這對選項需要一起使用懊亡,以允許一個祖先組件向其所有子孫后代注入一個依賴,不論組件層次有多深乎串,并在起上下游關系成立的時間里始終生效

provide:Object 或 () => Object 選項應該是一個對象或返回一個對象的函數(shù)店枣。該對象包含可注入其子孫的屬性
inject:Array<string> 或 { [key: string]: string | Symbol | Object } 這是去看vue.js官網(wǎng)吧一時寫不明白,簡單用自己理解的說下,應該是一個String類型的數(shù)組,或者是一個對象,當是數(shù)組時比較好理解直接是provide中暴露的屬性名的字符傳數(shù)組["a"],當是對象時 key是與本地綁定的值,值是字符串,或Symbol或是一個對象,當是字符串時與provide暴露的一致,當是Symbol時與provide暴露的Symbol一致;當是對象時,對象的兩個key分別是 from 和default ,對應的值是provide暴露的(注入的內(nèi)容) 字符串或 Symbol; 說不明白,以后加示例吧.

浪客行1213的簡書


xhh
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鸯两,更是在濱河造成了極大的恐慌闷旧,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钧唐,死亡現(xiàn)場離奇詭異忙灼,居然都是意外死亡,警方通過查閱死者的電腦和手機钝侠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門该园,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人帅韧,你說我怎么就攤上這事里初。” “怎么了忽舟?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵双妨,是天一觀的道長。 經(jīng)常有香客問我叮阅,道長刁品,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任帘饶,我火速辦了婚禮哑诊,結果婚禮上,老公的妹妹穿的比我還像新娘及刻。我一直安慰自己镀裤,他們只是感情好,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布缴饭。 她就那樣靜靜地躺著暑劝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪颗搂。 梳的紋絲不亂的頭發(fā)上担猛,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音丢氢,去河邊找鬼傅联。 笑死,一個胖子當著我的面吹牛疚察,可吹牛的內(nèi)容都是我干的蒸走。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼貌嫡,長吁一口氣:“原來是場噩夢啊……” “哼比驻!你這毒婦竟也來了该溯?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤别惦,失蹤者是張志新(化名)和其女友劉穎狈茉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掸掸,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡氯庆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了猾漫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片点晴。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖悯周,靈堂內(nèi)的尸體忽然破棺而出粒督,到底是詐尸還是另有隱情,我是刑警寧澤禽翼,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布屠橄,位于F島的核電站,受9級特大地震影響闰挡,放射性物質發(fā)生泄漏锐墙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一长酗、第九天 我趴在偏房一處隱蔽的房頂上張望溪北。 院中可真熱鬧,春花似錦夺脾、人聲如沸之拨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚀乔。三九已至,卻和暖如春菲茬,著一層夾襖步出監(jiān)牢的瞬間吉挣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工婉弹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留睬魂,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓镀赌,卻偏偏與公主長得像汉买,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子佩脊,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Vue 3.0 性能提升主要是通過哪幾方面體現(xiàn)的蛙粘? vue2在初始化的時候,對data中的每個屬性使用define...
    Smallbore閱讀 1,161評論 0 8
  • 前言 組件是 vue.js最強大的功能之一威彰,而組件實例的作用域是相互獨立的出牧,這就意味著不同組件之間的數(shù)據(jù)無法相互引...
    用技術改變世界閱讀 2,164評論 1 3
  • 訪問元素 & 組件 在絕大多數(shù)情況下,我們最好不要觸達另一個組件實例內(nèi)部或手動操作 DOM 元素歇盼。不過也確實在一些...
    前端菜籃子閱讀 728評論 0 0
  • 1.vue.js的兩個核心是什么舔痕? vue.js的兩個核心分別是數(shù)據(jù)驅動(MVVM)和組件化。 一豹缀、數(shù)據(jù)驅動 數(shù)據(jù)...
    fengcol閱讀 1,067評論 0 3
  • 一:什么是閉包伯复?閉包的用處? (1)閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)邢笙。在本質上啸如,閉包就 是將函數(shù)內(nèi)部和函數(shù)外...
    xuguibin閱讀 9,601評論 1 52