简单地问一下,如果我调用这个.$emit,它应该是异步函数,或者我可以预期这个。$on的回调会立即被调用?
谢谢,
发布于 2019-01-23 05:23:37
它立即被称为:https://codepen.io/BeniaminH/pen/mdVNpaZ?editors=1111
methods: {
emitEvent() {
this.$emit('myEvent')
console.log('emitted')
},
},
mounted() {
this.$on('myEvent', () => {
console.log('triggered')
})
}日志:
"triggered"
"emitted"发布于 2021-02-03 12:12:26
我之所以提出这个问题,是因为我有一个问题,那就是在发射后道具的“旧”值是否存在。下面是示例
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>`
});<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="root"></div>
我原以为发出后我的count值会立即更新,但事实并非如此。它只在下一个刻度中更新。当您期望同步执行$emit时,请记住这一点。
https://stackoverflow.com/questions/54316518
复制相似问题