Javascript 很难重定向到404页面

Javascript 很难重定向到404页面,javascript,vue.js,vue-router,Javascript,Vue.js,Vue Router,如果访问的用户配置文件不存在,我将尝试重定向到404页面。我正在运行一个异步创建的生命周期钩子,它检查用户是否存在,如果不存在,我将使用$router.push推送到404页面,如下所示: component.vue async created() { const userExists = await this.$store.dispatch("user/creatorExists", { userId: this.$route.params.user

如果访问的用户配置文件不存在,我将尝试重定向到404页面。我正在运行一个异步创建的生命周期钩子,它检查用户是否存在,如果不存在,我将使用
$router.push
推送到404页面,如下所示:

component.vue

async created() {
    const userExists = await this.$store.dispatch("user/creatorExists", {
        userId: this.$route.params.userId
    });
    if (!userExists) {
        this.$router.push({ name: "pageNotFound" });
    }
问题在于,在调用以检查用户是否存在的过程中,
component.vue
将完全加载,因此最终用户将在重定向之前看到初始组件在屏幕上闪烁


如果用户不存在,是否有更好的方法重定向到404页面?

在路由设置之前使用

从“where/your/store/lives”导入存储
导出默认值{
名称:“用户配置文件”,
路由前异步(到、从、下一个){
const userExists=wait store.dispatch(“user/creatorExists”{
userId:to.params.userId
});
如果(!userExists){
返回next({name:“pageNotFound”});
}
下一个()
},
//数据、计算、方法等
}
另见


请注意,在
beforeRouteEnter
guard中,无法通过
访问Vue组件,因此您需要从定义的任何位置导入
存储

我的建议是,您应该在使用
路由器中放入逻辑。beforeach

const路由器=新的VueRouter({…})
路由器.beforeach((到、从、下一个)=>{
//每次进入页面或特定页面前检查
})

谢谢。与路由器相比,这有什么优势?在每次更改之前?@Matt全球导航卫士会执行每一次路线更改,无论是哪条路线。它们是全局逻辑(比如身份验证检查)的好地方,但我认为上面的用例非常特定于这个特定组件