vue實現(xiàn)進(jìn)入某個頁面后替換地址欄路徑的操作方法
vue實現(xiàn)進(jìn)入某個頁面后替換地址欄路徑
需求背景:a系統(tǒng)進(jìn)入b系統(tǒng)首頁("/index")需要攜帶token,如 example.com/index?token="thisIsMyToken" 需要再b系統(tǒng)中將地址欄攜帶的token清除
getBtnType(type) { this.$router.push({ path: "/", query: { token: 'thisIsMyToken' }, }) },
b系統(tǒng)中的router/index.js
router.beforeEach((to, from, next) => { if (to.query.token) { localStorage.setItem("myToken", to.query.token) router.replace({ path: "/" }).then((res) => { next(); }) } });
vue重新加載/刷新當(dāng)前頁面 改變url參數(shù)觸發(fā)頁面生命周期
vue頁面在實際開發(fā)中,經(jīng)常會遇到改變url參數(shù),重新加載頁面數(shù)據(jù)的需求,但是只改變頁面url并不會觸發(fā)組件的生命周期,這就需要用其他方法來實現(xiàn)了。
一、this.$router.go(0) 和 location.reload()
相當(dāng)于刷新瀏覽器,會重新加載頁面資源,體驗相當(dāng)差。
二、推薦使用:provide / inject 組合
在index.vue(與頁面結(jié)構(gòu)有關(guān))文件,聲明reload方法,控制router-view的顯示或隱藏,從而控制頁面的再次加載。
<template> <div> <menu-top></menu-top> <menu-slide></menu-slide> <div class="app-content"> <transition name="router-fades" mode="out-in"> <router-view v-if="isRefresh"></router-view> </transition> </div> </div> </template> <script> import MenuTop from "@/components/menu-top.vue"; import MenuSlide from "@/components/menu-slide.vue"; export default { provide () { //注入重新加載組件方法(子頁面可以通過inject屬性接收) return { reload: this.reload } }, components: { MenuSlide, MenuTop }, data () { return { isRefresh: true } }, methods: { async reload () { this.isRefresh= false await this.$nextTick() this.isRefresh= true } } } </script>
原理:允許一個祖先組件向其所有子孫后代注入一個依賴,不論組件層次有多深,并在起上下游關(guān)系成立的時間里始終生效
在需要使用的子頁面通過inject屬性接收,直接調(diào)用this.reload(),只加載當(dāng)前組件,并且觸發(fā)組件的生命周期函數(shù),不會刷新整個網(wǎng)站,效果很好
<template> <div></div> </template> <script> export default { inject: ['reload'], methods:{ reloadFun () { this.reload() } } } </script>
到此這篇關(guān)于vue實現(xiàn)進(jìn)入某個頁面后替換地址欄路徑的文章就介紹到這了,更多相關(guān)vue替換地址欄路徑內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解基于 axios 的 Vue 項目 http 請求優(yōu)化
這篇文章主要介紹了詳解基于 axios 的 Vue 項目 http 請求優(yōu)化,非常具有實用價值,需要的朋友可以參考下2017-09-09vue項目動態(tài)設(shè)置頁面title及是否緩存頁面的問題
這篇文章主要介紹了vue項目動態(tài)設(shè)置頁面title及是否緩存頁面的問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11defineProps宏函數(shù)不需要從vue中import導(dǎo)入的原因解析
這篇文章主要介紹了defineProps宏函數(shù)不需要從vue中import導(dǎo)入的原因解析,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07使用Element進(jìn)行前端開發(fā)的詳細(xì)圖文教程
眾所周知Element是一套Vue.js后臺組件庫,它能夠幫助你更輕松更快速地開發(fā)后臺項目,下面這篇文章主要給大家介紹了關(guān)于使用Element進(jìn)行前端開發(fā)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11