해결 vue bus.$emit 터치 첫 번째 $on 감청 문제 없음
새 버스.js
import Vue from 'vue'
export const bus = new Vue()
인용 버스.js
import {bus} from './bus'
bus.$on('test', function (msg) {
console.log(msg)
})
bus.$emit('test', 11)
bus.$emit 터치 첫 번째 emit 터치 첫 번째 emit 터치 첫 번째 $on 감청 불가$emit가 $on보다 먼저 실행되었기 때문에 VUE는 감청 이벤트를 저장하지 않았기 때문에 데이터를 감청할 수 없습니다.
$emit를 호출할 때 하위 구성 요소가 생성되지 않아서 데이터를 감청할 수 없습니다. 하위 구성 요소가 생성되면 전달된 데이터를 감청할 수 있습니다.
내 해결 방법은 $emit를 호출할 때 emit를 사용할 때 $nextTick () 방법을 사용하는 것이다
사용법: 다음 DOM 업데이트 주기로 콜백 지연을 수행합니다.데이터를 수정한 후 바로 사용하고 DOM 업데이트를 기다립니다.그것은 전역적인 방법인 Vue와 같다.nextTick와 마찬가지로 다른 것은 리셋된this가 자동으로 호출된 실례에 연결되는 것입니다.
new Vue({
// ...
methods: {
// ...
example: function () {
// DOM
this.$nextTick(function () {
// DOM
bus.$emit('test', 11)
})
}
}
})
라우팅이 여러 구성 요소에서 반복적으로 감청되지 않도록 하려면 라우팅이 전환되기 전에 현재 구성 요소 감청 이벤트를 제거하면 됩니다.
beforeDestroy () {
//
this.$bus.$off('test')
}
추가 정보: 구성 요소 간에this.$를 사용합니다.bus.$에 값을 전달하기 전에 this.$가 필요합니다.bus.$off 로그아웃 이벤트this.$bus는 전역 변수입니다.
a, b는 두 개의 부모 구성 요소이고 c는 하위 구성 요소이다.
c 페이지 트리거 이벤트:
this.$bus.$emit(event)
a, b 페이지에서 c 구성 요소의 이벤트를 감청합니다
pagea:
this.$bus.$on(event, () => {
this.status = 'reserve'
})
pageb:
this.$bus.$on(event, () => {
this.status = 'buying'
})
만약 a 페이지를 호출한 후에 b 페이지를 호출하면this.status는 우리가 원하는 바이잉이 아니라reserve입니다.올바른 쓰기 방법:
pagea:
this.$bus.$off(event).$on(event, () => {
this.status = 'reserve'
})
pageb:
this.$bus.$off(event).$on(event, () => {
this.status = 'buying'
})
이상 해결 vue bus.$emit가 첫 번째 $on 감청을 촉발했지만 문제가 되지 않았습니다. 편집자가 여러분에게 공유한 모든 내용을 참고해 주시고 저희를 많이 사랑해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fastapi websocket 및 vue 3(Composition API)1부: FastAPI virtualenv 만들기(선택 사항) FastAPI 및 필요한 모든 것을 다음과 같이 설치하십시오. 생성main.py 파일 및 실행 - 브라우저에서 이 링크 열기http://127.0.0.1:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.