簡體   English   中英

如果存儲 getter 更改而不重新加載頁面,則重新運行 nuxt 路由中間件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM