首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue的$emit操作是异步的吗?

Vue的$emit操作是异步的吗?
EN

Stack Overflow用户
提问于 2019-01-23 05:13:20
回答 2查看 5.1K关注 0票数 4

简单地问一下,如果我调用这个.$emit,它应该是异步函数,或者我可以预期这个。$on的回调会立即被调用?

谢谢,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-23 05:23:37

它立即被称为:https://codepen.io/BeniaminH/pen/mdVNpaZ?editors=1111

代码语言:javascript
复制
methods: {
  emitEvent() {
    this.$emit('myEvent')
    console.log('emitted')
  },
},
mounted() {
  this.$on('myEvent', () => {
    console.log('triggered')
  })
}

日志:

代码语言:javascript
复制
"triggered"
"emitted"
票数 5
EN

Stack Overflow用户

发布于 2021-02-03 12:12:26

我之所以提出这个问题,是因为我有一个问题,那就是在发射后道具的“旧”值是否存在。下面是示例

代码语言:javascript
复制
Vue.component('child', {
  props: ['count'],
  methods: {
    emitEvent() {
      this.$emit('increment')
      console.log('after emit', this.count);
      Vue.nextTick(() => {
        console.log('next tick', this.count);
      })
    },
  },
  template: `<div>count {{count}}. <button @click="emitEvent()">emit</button></div>`
})

const example2 = new Vue({
  el: "#root",
  data: {
    count: 100,
  },
  methods: {
    increment() {
      this.count++;
    }
  },
  template: `<div id="example-2"><child :count="count" @increment="increment" /></div>`
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id="root"></div>

我原以为发出后我的count值会立即更新,但事实并非如此。它只在下一个刻度中更新。当您期望同步执行$emit时,请记住这一点。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54316518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档