【问题标题】:Next() is not being called on beforeRouteUpdate using the same component没有使用相同的组件在 beforeRouteUpdate 上调用 Next()
【发布时间】:2020-06-04 04:10:32
【问题描述】:
我使用同一个 vue-component 来显示我通过 axios 获取的数据。单击链接后,ajax 请求正在获取新数据。
但如果组件已经加载,用户点击另一个链接加载不同的数据,next()-方法不会被调用。
查看我的 codepen 以了解我的意思。应该有一个警报显示。如果您是第一次单击链接,它会这样做。如果你切换到另一个链接,它不会。
https://codepen.io/spqrinc/pen/YzXGGGL
【问题讨论】:
标签:
javascript
vue.js
vuejs2
vue-component
vue-router
【解决方案1】:
来自docs:
请注意,beforeRouteEnter 是唯一支持将回调传递给 next 的守卫。对于beforeRouteUpdate 和beforeRouteLeave,this 已经可用,因此不需要传递回调,因此不支持
所以beforeRouteUpdate 中的next() 无法进行回调,因为您已经可以访问this 中的实例。您在回调中使用vm 完成的任何操作都可以在没有它的情况下使用this 完成:
beforeRouteUpdate(to, from, next) {
alert("Reloaded");
// `this` works
next();
}