gpt4 book ai didi

javascript - 视觉 : How to use Per-Route Guard with Vuex getter?

转载 作者:行者123 更新时间:2023-12-04 03:45:12 41 4
gpt4 key购买 nike

类似于我们使用 isAuthenticate 函数来检查用户是否已正确验证的方式,我正在尝试在我的商店中进行检查。

const state = {
cliente: []
};

const getters = {
//Verificar Regra
CHECK_CLIENTE_STATE: (state) => {
return state.cliente
}
}

const actions = {
FETCH_DADOS({ commit }, obj) {
return fetch(`http://localhost:3030/pessoas/informacao/${obj['data']}`)
.then(response => response.json())
.then(data => commit('SetCliente', data))
.catch(error => console.log(`Fetch: ${error}`))
}
}

const mutations = {
SetCliente(state, cliente) {
state.cliente = cliente
}
}

登录页面,

  methods:{
fetch(){
this.$store.dispatch("FETCH_DADOS",{'data':'12345'})
this.$router.push('/')
}
}

在第一次获取点击时,我检查了 Vuex,显然它正在工作。

enter image description here

路线:

const routes = [{
path: '/',
beforeEnter: (to, from, next) => {
if (store.getters.CHECK_CLIENTE_STATE == '') {
next('/login')
}
next();
},
component: () =>
import ('../views/Home')
},
{
path: '/login',
component: () =>
import ('../views/Login')
}
]

好吧,在 console.log 中,在第一次获取点击时,我收到了这个错误,但是在 vuex 中,如上所示,商店已满。

Uncaught (in promise) Error: Redirected when going from "/login" to"/" via a navigation guard.

为什么在第二次点击时重定向到 home,而不是在第一次点击时?

更新中

在 router.js 中尝试一种新方法

path: '/',
beforeEnter: (to, from, next) => {
console.log(!store.getters.CHECK_CLIENTE_STATE.length)
if (!store.getters.CHECK_CLIENTE_STATE.length) {
next('/login')
}
next();
},
component: () =>
import ('../views/Home')

但同样,第一次获取是 TRUE,第二次是 FALSE,在第二次我被重定向到/home

最佳答案

路由器在加载数据之前被引导。等待它:

methods:{
async fetch(){
await this.$store.dispatch("FETCH_DADOS",{'data':'12345'})
this.$router.push('/')
}
}

关于javascript - 视觉 : How to use Per-Route Guard with Vuex getter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65298252/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com