有没有办法在 beforeRouteEnter 中显示 bootstrap-vue $toast 反馈?

Posted

技术标签:

【中文标题】有没有办法在 beforeRouteEnter 中显示 bootstrap-vue $toast 反馈?【英文标题】:Is there a way to show a bootstrap-vue $toast feedback in beforeRouteEnter? 【发布时间】:2020-06-19 02:48:53 【问题描述】:

我有一个加载单个用户的组件,所以我使用vue-router 保护来加载数据,并在出错的情况下重定向回用户列表组件。

有没有办法显示vue-bootstrap $toast?通常我从this组件访问$toast,但显然thisbeforeRouteEnter中还不存在。

我知道我可以通过其他方式进行管理(在页面中显示错误并使用created(),或使用vuex 保留错误并在下一页中显示),但由于我使用的是$toast我想在任何地方保持一致性。

我不知道...如果我能访问根组件,我就能访问$toast,但我看不到方法。

// userComponent

// ...
  beforeRouteEnter(to, from, next) 
    Promise.all([store.dispatch("users/fetchOne",  id: to.params.id  )])
      .then(next)
      .catch(() => 
        // this.$root.$bvToast.toast("ERROR!!!",  variant: "danger" ); // can't do this :(
        next("/users");
      );
  ,
//...

【问题讨论】:

【参考方案1】:

在 beforeRouteEnter 中您无权访问此内容。所以你可以在下面做:

next(vm => 
    vm.$root.$bvToast.toast(...)
)

【讨论】:

以上是关于有没有办法在 beforeRouteEnter 中显示 bootstrap-vue $toast 反馈?的主要内容,如果未能解决你的问题,请参考以下文章

如何在设置挂钩中使用 beforeRouteEnter?

BeforeRouteEnter 无法通过脚本设置在生产环境中工作

如何在单文件组件中正确使用 Vue Router beforeRouteEnter 或 Watch 触发方法?

如何在 vue-router beforeRouteEnter 钩子中重定向到不同的 url?

如何使 BeforeRouteEnter 中的 next(false) 阻止 Vue-Router 导航到路由?

在保存数据之后,不知道什么时候清空数据,不如试试beforeRouteEnter