• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Cannot read properties of undefined (reading '$on)

武飞扬头像
盛情不难却
帮助31

1. 错误信息

Vue3 中使用 $on 触发事件报错,错误信息如下

学新通技术网

2. 改正前

简单看下我的组件做的(错)事

// ListDemo.vue
import event from './event'

methods: {
  addItem(title) {
    console.log("兄弟组件之间使用自定义组件", title);
  }
},
mounted() {
  // 绑定自定义事件     这里使用函数名,而不是直接()=>{}是因为方便解绑
  event.$on("addItem", this.addItem);
},
beforeUnmount() {
  // 及时销毁,否则可能造成内存泄露
  event.$off("addItem", this.addItem);
}
// InputDemo.vue
import event from "./event";

  methods: {
    addItem() {
      event.$emit("addItem", this.title);
    }
  }
</script>

3. 错误分析

因为最开始是引入一个新的 Vue 实例,所以最初没有看到 deprecated 的信息,后来直接 this.$on 才想起来它在 Vue3 中已经被废弃了

学新通技术网

打开链接 eslint.vuejs.org/rules/no-de… 可以看到它提示我们引入 mitt ,然后根据它的提示改完就好啦。

学新通技术网

当然,还得要导入依赖,并且将 mitt 作为单独的文件暴露出事件总线对象

npm i mitt -s

这里有一个 mitt库(事件总线) 的使用,还是挺详细滴

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tangiibfh
系列文章
更多 icon
同类精品
更多 icon
继续加载