vue實(shí)現(xiàn)進(jìn)入某個(gè)頁(yè)面后替換地址欄路徑的操作方法
vue實(shí)現(xiàn)進(jìn)入某個(gè)頁(yè)面后替換地址欄路徑
需求背景:a系統(tǒng)進(jìn)入b系統(tǒng)首頁(yè)("/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)前頁(yè)面 改變url參數(shù)觸發(fā)頁(yè)面生命周期
vue頁(yè)面在實(shí)際開發(fā)中,經(jīng)常會(huì)遇到改變url參數(shù),重新加載頁(yè)面數(shù)據(jù)的需求,但是只改變頁(yè)面url并不會(huì)觸發(fā)組件的生命周期,這就需要用其他方法來實(shí)現(xiàn)了。
一、this.$router.go(0) 和 location.reload()
相當(dāng)于刷新瀏覽器,會(huì)重新加載頁(yè)面資源,體驗(yàn)相當(dāng)差。
二、推薦使用:provide / inject 組合
在index.vue(與頁(yè)面結(jié)構(gòu)有關(guān))文件,聲明reload方法,控制router-view的顯示或隱藏,從而控制頁(yè)面的再次加載。
<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 () { //注入重新加載組件方法(子頁(yè)面可以通過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>原理:允許一個(gè)祖先組件向其所有子孫后代注入一個(gè)依賴,不論組件層次有多深,并在起上下游關(guān)系成立的時(shí)間里始終生效
在需要使用的子頁(yè)面通過inject屬性接收,直接調(diào)用this.reload(),只加載當(dāng)前組件,并且觸發(fā)組件的生命周期函數(shù),不會(huì)刷新整個(gè)網(wǎng)站,效果很好
<template>
<div></div>
</template>
<script>
export default {
inject: ['reload'],
methods:{
reloadFun () {
this.reload()
}
}
}
</script>到此這篇關(guān)于vue實(shí)現(xiàn)進(jìn)入某個(gè)頁(yè)面后替換地址欄路徑的文章就介紹到這了,更多相關(guān)vue替換地址欄路徑內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
electron+vue?實(shí)現(xiàn)靜默打印功能
這篇文章主要介紹了electron+vue?實(shí)現(xiàn)靜默打印功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06
詳解基于 axios 的 Vue 項(xiàng)目 http 請(qǐng)求優(yōu)化
這篇文章主要介紹了詳解基于 axios 的 Vue 項(xiàng)目 http 請(qǐng)求優(yōu)化,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-09-09
vue項(xiàng)目動(dòng)態(tài)設(shè)置頁(yè)面title及是否緩存頁(yè)面的問題
這篇文章主要介紹了vue項(xiàng)目動(dòng)態(tài)設(shè)置頁(yè)面title及是否緩存頁(yè)面的問題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11
defineProps宏函數(shù)不需要從vue中import導(dǎo)入的原因解析
這篇文章主要介紹了defineProps宏函數(shù)不需要從vue中import導(dǎo)入的原因解析,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07
基于vue實(shí)現(xiàn)swipe分頁(yè)組件實(shí)例
本篇文章主要介紹了基于vue實(shí)現(xiàn)swipe分頁(yè)組件實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
使用Element進(jìn)行前端開發(fā)的詳細(xì)圖文教程
眾所周知Element是一套Vue.js后臺(tái)組件庫(kù),它能夠幫助你更輕松更快速地開發(fā)后臺(tái)項(xiàng)目,下面這篇文章主要給大家介紹了關(guān)于使用Element進(jìn)行前端開發(fā)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11

