vue里为什么所有页面的created钩子都执行了两次?

发布于 2022-09-11 15:44:34 字数 300 浏览 14 评论 0

下图是我的router配置,均只有一层扁平化的,除了app.vue的created钩子只执行了一次,整个项目的其他所有页面的created生命周期都各自执行了两次(项目用到了mint-ui的tab组件,不知道是否和这个有关)

图片描述

该如何解决才能让created只执行一次?它已经导致了很多获取数据的接口重复调用

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

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

发布评论

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

评论(7

花想c 2022-09-18 15:44:34

你的 tab组件 的子组件 是不是用 v-for循环了? 被循环的组件内又写了 <router-view>? 你试试多加一个tab

梦魇绽荼蘼 2022-09-18 15:44:34

<div id="app"> id="app" 和 index.html 的id 重复导致

演多会厌 2022-09-18 15:44:34

找到问题的原因了,不止是created被执行了两次,是整个生命周期的钩子全都被执行了两次。原因是使用了mint-ui的tab组件导致了有重复的路由挂载(可能是我使用的姿势不对··),以及重复声明了vue的全局实例。删除多余的全局vue实例,正确使用tab组件即可

停顿的约定 2022-09-18 15:44:34

我没遇到过这种问题,你只能等遇到过同样问题的人来答,因为从你的描述跟一张图片就能找到问题原因的可能性为零

小ぇ时光︴ 2022-09-18 15:44:34

把你mint-ui 版本升级一下 可能是它和vue的构建有重叠问题
还有你created钩子执行相同逻辑俩次? 触发时间节点也类似一致?

作妖 2022-09-18 15:44:34

代码真是太少了 不要用图片代替代码,会被踩的~

你的心境我的脸 2022-09-18 15:44:34

我也遇到过这个问题,这不是路由问题,路由不会引起钩子函数重复执行。
重复执行的可能情况:
1、组件更新
组件更新可能有以下可能:

  • v-if里的组件是一个子组件(子组件里可能有对父组件部分数据影响的可能,这就是我遇到的问题。我的子组件嵌套了多个层级组件,很复杂。解决办法: v-if修改为v-show或者合并组件)
  • 该组件或者嵌套的子组件存在Vue.mixin
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文