1 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個贊
是的,有辦法做到這一點(diǎn)!事實(shí)上,商店已經(jīng)在您的中間件中可用。但在你的情況下,商店是空的!您需要先獲取數(shù)據(jù)并填充存儲。
我建議你閱讀關(guān)于 nuxt 中間件的文檔https://nuxtjs.org/guide/routing#middleware。它指出
中間件可以是異步的。為此,只需返回一個 Promise 或使用第二個回調(diào)參數(shù)。
所以在你的情況下,你需要在你的中間件中返回一個 Promise :這個 Promise 將是 axios 請求。這是一個提議:
export default function ({ store, redirect }) {
return new Promise(resolve => store.dispatch('signup/addUserLogin', data).then((user) => {
if (!user) {
// User not found
redirect('/login');
} else {
// Do your stuff with the user freshly got, like commit in the store
resolve();
}
})
}
在您的情況下,您應(yīng)該修改操作addUserLogin:您應(yīng)該只在此函數(shù)中獲取 axios 查詢,而不是重定向。此外,您將遇到操作中使用的數(shù)據(jù)、密碼和用戶的問題。刷新時,您會丟失此數(shù)據(jù)。您應(yīng)該實(shí)現(xiàn)一個令牌系統(tǒng),如 JWT,并將它們存儲在本地存儲或 cookie 中(如本示例中的https://nuxtjs.org/examples/auth-external-jwt/)。
添加回答
舉報