关于 Cannot read property of null (reading '_leave Cb') 错误

721 阅读2分钟

vue3 + vite + element-plus遇到的一个问题

面包屑

  1. 在实现一个面包屑的时候,遇到了这样的一个问题,三级路由页面需要与二级路由页面同级显示,但是他们的路由配置规则是嵌套的关系,也就是二级路由页面与三级路由页面,都会通过一级路由页面去展示。通过在网络上找答案,找到几个相关的,但绝大部分都是vue2 实现的方式,下面是通过vue3 h函数去实现的,然后在通过路由记录,去渲染面包屑导航。
1. 实现方式
import { h, resolveComponent } from 'vue'
export default {
  path: '/edit',
  name: 'edit',
  meta: { auth: true, permission: "edit", menu: { icon: 'fab fa-fort-awesome-alt', title: '编辑列表', breadCrumbs: '编辑列表' } },
  component: () => import("@/layouts/admin.vue"),
  redirect: "/edit/content",
  children: [
    {
      path: '/edit/content',
      component: { // 重点
        render: () => {
          return h(resolveComponent('router-view'))
        }
      },
      meta: { permission: "content", isMenu: true, menu: { title: '编辑内容', breadCrumbs: '编辑内容' } },
      children: [
        {
          path: '',
          name: 'content',
          component: () => import("@/views/edit/content.vue"),
        },
        {
          name: 'content_about',
          path: '/edit/content/about',
          component: () => import("@/views/edit/about.vue"),
          meta: { menu: { breadCrumbs: '编辑详情' } }
        },
      ]
    },
    {
      name: 'edit_data',
      path: '/edit/edit_data',
      component: () => import("@/views/edit/edit-data.vue"),
      meta: { permission: "edit_data", menu: { title: '数据管理', breadCrumbs: '数据管理' } }
    }
  ]
}
  1. 问题就是配置完这个之后,当路由跳转的时候,就开始报错,Cannot read property of null (reading '_leave Cb') 一开始是这个错误,之后的错误我没有复制,各种的找不到,各种为空,最后在通过找了几天的答案,在github上面找到了这个问题,提出的人,并且也找到了回答,发现确实是他所回答到的,由于过渡和 KeepAlive 的使用仍在进行中,RFC 可能会有一些重大变化,打开我自己的代码,注掉了过度组件确实是因为这个动画的原因

image.png

最后通过自定义的tailwindcss,而不是去使用动画库完成动画,希望这个答案会给你很多帮助,面对这种错误,对于我这种菜鸡,只能不断的去查找答案,简单的记录一下,下次在遇到会有一个印象。

github issuse的位置

image.png

image.png