標籤:

請問vue組件如何reload或者說vue-router如何刷新當前的route??

使用場景為增加商品表單,用戶確定提交後,繼續新增,需要清理之前用戶輸入數據,並對其初始化,再走一遍組件載入的流程,其中還包括幾個子組件,如果手動去處理實在是太麻煩!!


已找到方法

router.go(0)

這個router是定義的vue-router,例如:

const router = new Router({})

把這個export導出,在需要的組件里import引用


// replace another route (with different component or a dead route) at first
// 先進入一個空路由
vm.$router.replace({
path: "/_empty",
})
//then replace your route (with same component)
vm.$router.replace({
path: "/student/report",
query: {
"paperId":paperId
}
})


利用v-if控制router-view,在根組件APP.vue中實現一個刷新方法

&
&
&

&
export default {
data () {
return {
isRouterAlive: true
}
},
methods: {
reload () {
this.isRouterAlive = false
this.$nextTick(() =&> (this.isRouterAlive = true))
}
}
}
&

然後其它任何想刷新自己的路由頁面,都可以這樣:

this.$root.reload()


最近遇到了這個問題,我的寫法:

methods:{

newPage: function(){

/*所有頁面初始化流程掛載於此*/

...

}

},

created(){ newPage() },

watch:{

user_id() { newPage(); }

}

不動路由,應該能滿足題中需求。


我寫了一個中轉路由,先push,然後go(-1);


這個和·window.location.reload();有什麼區別·


//mode: "history"

去掉就行了


參考下這個issue

[Feature] A reload method like location.reload() · Issue #296 · vuejs/vue-router


我遇到的問題是部署到IIS上,Refresh 就是404了,因為請求發送給了IIS,IIS按照請求路徑去查找找不到指定文件。


使用 Web Storage吧,數據就能保留住了

&
&
&
&
&首頁1&
&首頁2&
&
&
&首頁1&
&首頁2&
& &&
&

&
export default {
name: "app",
data () {
return {
selected: "1"
}
},
methods: {
clickRouterLink () {
if (typeof (Storage) !== "undefined") {
if (localStorage.selected) {
// 存儲
localStorage.selected = this.selected
} else {
// 創建Web Storage
localStorage.selected = 1
}
} else {
console.log("抱歉!您的瀏覽器不支持 Web Storage ...")
}
// 頁面刷新
location.reload()
}
},
created: function () {
// 從Web Storage取值
this.selected = localStorage.selected
}
}
&


推薦閱讀:

Vue剛出不久,Vuex 就出來了,想請教下Vuex做了什麼事情?
Vuejs .vue里怎麼引入第三方js和css呢比如jquery的輪播插件 要引入js和css?
Vue中到底是什麼是父組件,什麼是子組件?

TAG:Vuejs |