欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

vue $emit無效

錢艷冰2年前9瀏覽0評論

最近在使用Vue開發(fā)項目的時候,遇到了一個比較奇怪的問題。我們都知道Vue組件之間通信可以使用$emit方法,但是在一個特定的場景下,$emit卻總是無效。

具體來說,我們在一個叫做Parent的組件中定義了一個子組件Child。我們希望在Child組件中點擊一個按鈕,然后向上發(fā)送一個事件,Parent組件可以監(jiān)聽并處理這個事件。于是我們在Child組件中這樣定義:

methods: {
handleClick () {
this.$emit('my_event')
}
}

然后我們在Parent組件中監(jiān)聽這個事件:

...
methods: {
handleEvent () {
console.log('event received')
}
}

然而,當我們在Child組件中點擊按鈕時,并沒有看到控制臺輸出“event received”。經(jīng)過一番排查,我們發(fā)現(xiàn)問題出在了Parent組件的定義上。

原來,在Parent組件中,我們使用了v-if指令來控制Child組件的顯示。而在Child組件還未被渲染時,它是無法發(fā)送事件的,因此$emit方法不起作用。解決方法也很簡單,我們只需要使用v-show指令來代替v-if即可:

...
data: () =>({
showChild: true
}),
methods: {
handleEvent () {
console.log('event received')
}
}

總結(jié)一下,如果你遇到了Vue.$emit無效的情況,不妨檢查一下你的組件是不是被if指令控制了顯示和隱藏。如果是的話,試試替換成v-show指令,說不定問題就迎刃而解了。