点击按钮vue路由的页面跳不过来

发布于 2022-09-12 01:09:37 字数 3990 浏览 22 评论 0

点击这个按钮应该跳到添加的页面
image.png

这是按钮
image.png

这是路由
image.png

点第一遍这个按钮的时候控制台什么也没有,再点一次就出现异常了
image.png

vue-router.esm.js?8c4f:2085 Uncaught (in promise) NavigationDuplicated {_name: "NavigationDuplicated", name: "NavigationDuplicated", message: "Navigating to current location ("/addMember") is not allowed", stack: "Error↵    at new NavigationDuplicated (webpack-int…node_modules/vue/dist/vue.runtime.esm.js:2178:14)"}_name: "NavigationDuplicated"name: "NavigationDuplicated"message: "Navigating to current location ("/addMember") is not allowed"stack: "Error↵    at new NavigationDuplicated (webpack-internal:///./node_modules/vue-router/dist/vue-router.esm.js:2009:14)↵    at HTML5History.confirmTransition (webpack-internal:///./node_modules/vue-router/dist/vue-router.esm.js:2125:18)↵    at HTML5History.transitionTo (webpack-internal:///./node_modules/vue-router/dist/vue-router.esm.js:2069:8)↵    at HTML5History.push (webpack-internal:///./node_modules/vue-router/dist/vue-router.esm.js:2400:10)↵    at eval (webpack-internal:///./node_modules/vue-router/dist/vue-router.esm.js:2812:22)↵    at new Promise (<anonymous>)↵    at VueRouter.push (webpack-internal:///./node_modules/vue-router/dist/vue-router.esm.js:2811:12)↵    at VueComponent.addMember (webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/main/accountBookModule/item/operationMember.vue?vue&type=script&lang=js&:13:20)↵    at invokeWithErrorHandling (webpack-internal:///./node_modules/vue/dist/vue.runtime.esm.js:1853:26)↵    at VueComponent.invoker (webpack-internal:///./node_modules/vue/dist/vue.runtime.esm.js:2178:14)"__proto__: Error
eval @ vue-router.esm.js?8c4f:2085
abort @ vue-router.esm.js?8c4f:2116
confirmTransition @ vue-router.esm.js?8c4f:2124
transitionTo @ vue-router.esm.js?8c4f:2068
push @ vue-router.esm.js?8c4f:2399
eval @ vue-router.esm.js?8c4f:2811
push @ vue-router.esm.js?8c4f:2810
addMember @ operationMember.vue?5b0b:13
invokeWithErrorHandling @ vue.runtime.esm.js?2b0e:1854
invoker @ vue.runtime.esm.js?2b0e:2179
invokeWithErrorHandling @ vue.runtime.esm.js?2b0e:1854
Vue.$emit @ vue.runtime.esm.js?2b0e:3888
handleClick @ element-ui.common.js?5c96:9412
invokeWithErrorHandling @ vue.runtime.esm.js?2b0e:1854
invoker @ vue.runtime.esm.js?2b0e:2179
original._wrapper @ vue.runtime.esm.js?2b0e:6917

最后在网上找的一个修改路由的push方法也不管用

const routerPush = VueRouter.prototype.push
VueRouter.prototype.push = function push (location) {
   return routerPush.call(this, location).catch(error =>error)
}

按钮的代码:

<template>
  <el-row>
    <el-button size="small" type="success" @click="addMember">新增</el-button>
    <el-button size="small" type="danger">删除</el-button>
  </el-row>
</template>

<script>
export default {
  name: 'operationMember',
  methods: {
    addMember () {
      this.$router.push({ path: '/addMember' })
    }
  }
}
</script>

<style lang="scss" scoped>
</style>

然后是addMember页,这里面现在还什么都没有:

<template>
  <div>asd</div>
</template>

<script>
export default {
  name: 'addMember'
}
</script>

<style lang="scss" scoped>
</style>

最后成功的样子是这样的:
路由里是这样写的:

{
    path: '/addMember',
    name: 'addMember',
    components: { addMember: () => import(/* webpackChunkName: "group-foo" */'../addMember') }
  },

router-view这边是这样的:
image.png

最后谢谢各位大佬的帮助,感谢大家

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

丿*梦醉红颜 2022-09-19 01:09:37
  1. 首先,你要记得在父容器里使用 router-view
  2. 其次,链接应该用 router-link
  3. 链接应尽量用名称,不要用实际路径,方便维护
  4. 所以这里你应该写成 router-link(:to="{name: 'member.new'}")
  5. 报错本身是正常的
孤单情人 2022-09-19 01:09:37

当前地址和你想跳转的目标地址相同 就会报这个错

圈圈圆圆圈圈 2022-09-19 01:09:37

不会用了子路由 页面中又有router-view吧
ps: 建议将addMember的代码贴出来, 并将按钮所在页面代码给全一点

犀利一笑^_^

安稳善良 2022-09-19 01:09:37

排查:
1、第一次点击按钮之后,看看浏览器的url地址是否发生了变化,如果发生了变化,说明路由已经发生跳转,也就是 this.$router.push 完成了工作;从你的描述来看,你的这个跳转应该是发生了。
2、浏览器地址发生了变化,但是页面没有出来,这说明你的 路由显示的地方写的有问题,可以参考项目中其他页面,或者自己使用了说明路由去看看官方文档

浏览器错误:
你的描述其实是有问题的,点击第一次不是没有反应,可能浏览器地址栏已经发生了变化,只是你自己不知道而已;

当第一次点击之后,再次点击,vue-router就会 报错。因为他不允许相同路由 再 push 相同的路由

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文