国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

vue實現(xiàn)路由不變的情況下,刷新頁面操作示例

2024-05-06 15:43:59
字體:
來源:轉載
供稿:網(wǎng)友

本文實例講述了vue實現(xiàn)路由不變的情況下,刷新頁面操作。分享給大家供大家參考,具體如下:

背景1:在vue寫的后臺管理項目中,經(jīng)常會有增、刪、改、查的操作,這些操作只是跟用接口跟后臺交互下

既然用接口交互,那肯定就是axios的異步請求,那么就是說后臺數(shù)據(jù)發(fā)生了改變,但是前臺的數(shù)據(jù)并沒有實時的更新(每次操作完后臺把列表數(shù)據(jù)重新返給你例外,但是這樣的話每次交互的數(shù)據(jù)量就偏大了)

背景2:在使用動態(tài)路由配置 /detail/:id 這樣的情況下,由于 router-view 是復用的,單純的改變 id 的值并不會刷新 router-view

所以就要想一個辦法,讓后臺執(zhí)行完操作后,給前臺返一個操作結果,然后前臺手動刷新頁面

一開始我想到的是用 window.location.reload() 或者 this.$router.go(0) 這兩個方法,但是后來發(fā)現(xiàn)這兩個方法會有短暫的白屏時間,用戶體驗并不太好,所以就放棄了,看了下別人的做法,整理下面兩種方法:

一、用中轉站的方式

這種方式意思就是讓每次操作完成以后,都讓路由跳轉到這個中轉站頁面,然后這個頁面獲取到進來路由的路徑再返回去就可以了,這種方式可以作為解決方法之一,普遍用的還是第二種。

二、provide / inject 的方式

這種方式,就是讓通過 provide 讓 App.vue 為所有子孫頁面注入一個 reload 的方法,然后在需要使用的頁面,通過 inject 注入即可,代碼如下:

App.vue

<template> <div id="app">  <router-view v-if="isRouterAlive"></router-view> </div></template>
<script>export default { name: "App", provide() {  return {   reload: this.reload  }; }, data() {  return {   isRouterAlive: true  }; }, methods: {  reload() {   this.isRouterAlive = false;   this.$nextTick(function() {    this.isRouterAlive = true;   });  } }};</script>

子頁面

export default {  name: 'children',  inject: ['reload'],  data(){    return {}  }  methods: {    delData(){      //在axios成功的回調里面      this.reload();    }  }}

希望本文所述對大家vue.js程序設計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 泽州县| 丰台区| 荃湾区| 白沙| 健康| 云林县| 会理县| 大同县| 大理市| 广宗县| 黑河市| 长汀县| 万年县| 马鞍山市| 宜章县| 峨山| 遂平县| 宜昌市| 大同县| 平果县| 汶上县| 黄梅县| 应用必备| 吐鲁番市| 长寿区| 白山市| 应用必备| 长岛县| 巢湖市| 海伦市| 厦门市| 增城市| 绥芬河市| 宝清县| 湾仔区| 天柱县| 隆尧县| 古交市| 濉溪县| 镇江市| 康平县|