[英]Rerun nuxt route middleware if store getter changes without reloading the page?
鑒於以下中間件,當store.getters.authenticated
更改時重新運行邏輯的最佳方法是什么,而不僅僅是在初始加載時。
中間件/auth.js
export default function ({ store, redirect }) {
if (!store.getters.authenticated) {
return redirect({ name: "login" })
}
}
您詢問了如何在中間件本身內部重新運行它,這是可能的中間件觸發器的第二部分(例如,如果用戶在停留在同一頁面上時不再經過身份驗證)並且沒有任何特定操作,例如使用輪詢或 websockets 時我想。
同時,第一部分是最簡單的:全局調用中間件(在nuxt.config.js
中)以在每個頁面導航時觸發它。
如果他保持在同一頁面上,您也可以像您一樣使用路由器移動,但此時檢查您的 axios 中是否存在錯誤可能更合適,因為它是發起者。
我也喜歡使用this.$nuxt.refresh()
在全局切換帳戶時觸發所有檢查,有助於重新運行所有那些美味的fetch()
掛鈎。
對我來說,kissu 的答案是不可能的,因為我需要在插件中工作。
但我找到了適合我的用例的解決方法。
if (process.client) {
this.redirect(window.location.pathname + '#')
}
這樣,整個 nuxt 內部都得到了刷新,但頁面沒有。
注意:在我的情況下不需要狀態代碼,因為請求僅在客戶端發出。
redirect
文檔:https://nuxtjs.org/docs/2.x/internals-glossary/context#redirect
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.