javascript - 在 VueJS 中,你在哪里监听发出的事件?

标签 javascript vue.js event-handling

设置如下:

export default Vue.extend({
 name: 'Home',
 computed: {
   ...mapState('user', ['card']),
 },
 created() {
  this.fetchData();
 },
 mounted() {
  this.$once('dataLoaded', () => {
    if (!this.card) {
      this.showWarning();
    }
  });
},
watch: {
  '$route': 'fetchData'
},
methods: {
  async fetchData() {
    await Promise.all([...]);
    this.$emit('dataLoaded');
  },
  showWarning() {
    // Vue global Plugin for creating a banner
    Notify.create();
  }
 }
});

我在mounted生命周期中附加了监听器,但我想知道是否应该在created()中执行它。它似乎在这两种情况下都工作得很好,因此我的问题是是否有一些最佳实践或者我在这里错过了一些重要的东西。

谢谢!

最佳答案

你把事情搞得太复杂了。 不需要emit,因为您只向我们展示一个组件
就像这样做:

methods: {
  async fetchData() {
    await Promise.all([...]);
    this.myMethod()
  },
  myMethod() {
    if (!this.card) {
      this.showWarning();
    }
  }

关于javascript - 在 VueJS 中,你在哪里监听发出的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58645791/

相关文章:

javascript - 如何仅在鼠标悬停监听器未激活时执行函数

events - ZF3 - 附加到 EventManager 的事件未触发

javascript - 当其中一个字段是数组时如何更改状态对象?

javascript - 无法访问vuex商店中的axios

reference - VueJs 向对象引用问题添加新键

javascript - 我的 Vuejs 应用程序无法使用 axios 发送 http post

c# - 我应该如何为我的 C# Windows 窗体应用程序编写我的事件处理程序?

javascript - 从 emberjs store.find 获取数据

javascript - 如何从具有特定属性的对象数组中选择对象

javascript - 将数据从本地SQL Server同步到Internet上的MySQL Server(实时服务器)