Vue.js에서 계산된 것을 사용하고 마운트된 경우 계산된 속성이 아직 비어 있습니다.
처음입니다.Vue.js
고객님이 돌아오면 자동으로 화상채팅으로 고객과 영업사원을 연결하는 컴포넌트를 만들고 있습니다(앞서는 고객님은 없습니다).함수를 호출하여 서드파티 화상채팅 소프트웨어를 활성화해야 합니다.startMyVisit()
.
이전에 에러를 표시했을 경우Error: visit argument is not of type MyCustomerVisit
기능 제일선에서startMyVisit()
나는 디버거와 가치의 그 선에서 멈췄다.this.getVisit
이''
호출 버튼을 만들었습니다.startMyVisit()
수동으로 동작합니다.그래서 제 결론은 전화를 거는 타이밍이startMyVisit()
틀렸는지, 틀렸는지.
이 에러는, 을 사용해 해결했습니다.watcher
계산 재산으로getVisit
및 콜 방식startMyVisit()
언제getVisit
아니다null
또는 비어 있습니다.
속성 계산 시getVisit
null이 아니거나 비어 있지 않으며 메서드startMyVisit()
라고 합니다.오류가 표시됩니다.[Vue warn]: Error in callback for watcher "getVisit": "ReferenceError: startMyVisit is not defined"
그리고.vue.runtime.esm.js?2b0e:1737 ReferenceError: startMyVisit is not defined
.
메서드가 올바르게 쓰여져 있고 철자가 맞는지 확인했습니다(복사앤페이스트를 사용하여 확인).
아무쪼록 잘 부탁드립니다.
여기 제 대기 세부사항의 코드가 있습니다.vue 컴포넌트(최신):
<template>
<div>
<h1>
Your video chat will start shortly...
</h1>
<br>
<h2>
Number of customers Ahead: {{numberOfCustomersAhead}}
</h2>
<br><br><br>
<!-- <button color="error" v-on:click="startMyVisit">Start My Visit</button> -->
<v-btn color="success" v-on:click="cancelVisit">Cancel My Video Chat</v-btn>
<app-visit-info></app-visit-info>
</div>
</template>
<script>
/* eslint-disable */
import visitInfo from './visitInfo';
export default {
name: 'waitingDetails',
components:{
'app-visit-info': visitInfo
},
created(){
console.log('created() calling method "startMyVisit()"');
this.startMyVisit();
},
mounted(){
console.log('mounted() calling method "startMyVisit()"');
this.startMyVisit();
},
computed:{
numberOfCustomersAhead(){
return this.$store.state.visit.numberOfCustomersAhead;
},
getSdk(){
return this.$store.state.sdk;
},
getVisit(){
console.log('computed: getVisit');
return this.$store.state.visit;
}
},
watch: {
getVisit: function(){
if (this.getVisit !== null && this.getVisit !== '') {
console.log('watch: getVisit !== null and is not empty!');
startMyVisit();
} else {
console.log('watch: getVisit is NULL or is EMPTY');
}
}
},
methods:{
startMyVisit(){
if (this.getVisit !== null && this.getVisit !== '') {
this.getSdk.visitService.launchVisitVideoChat(this.getVisit)
.then((videoChatLaunched) => {
if(videoChatLaunched !== true){
throw Error('problem launching the visit video chat');
} else {
console.log("Visit Video Chat Launched Successfully !");
}
return this.getSdk.visitService.waitForVideoToStart(this.getVisit);
}).then((visit) => {
this.$store.commit('setVisit', visit);
console.log('waitForVideoToStart... promise-->',visit);
return this.getSdk.visitService.waitForRepresentativeToJoinVisit(visit);
}).then((updatedVisit) => {
this.$store.commit('setVisit', updatedVisit);
console.log('waitForRepresentativeToJoinVisit... promise-->',updatedVisit);
console.log('customers ahead', updatedVisit.customersAheadOfYou);
this.customersAheadOfYou = updatedVisit.customersAheadOfYou;
return this.getSdk.visitService.updateConnectionStatus(updatedVisit);
}).then((visit) => {
this.$store.commit('setVisit', visit);
console.log('updateConnectionStatus... promise-->', visit);
return this.getSdk.visitService.waitForVisitToFinish(visit);
}).then((visit) => {
this.$store.commit('setVisit', visit);
console.log('Visit has ended. waitForVisitToFinish... promise-->', visit);
return;
});
} else {
console.log('startMyVisit() --> this.getVisit === null or is empty');
}
},
cancelVisit(){
this.getSdk.visitService.cancelVisit(this.getVisit)
.then((visit) => {
console.log('Cancel visit.. promise-->',visit);
});
}
}
}
</script>
작은 오타가 있어서 문제가 생긴 것 같습니다.워처에는 다음 코드가 있습니다.
if (this.getVisit !== null && this.getVisit !== '') {
console.log('watch: getVisit !== null and is not empty!');
startMyVisit();
} else {
console.log('watch: getVisit is NULL or is EMPTY');
}
하지만 난 네가 변해야 한다고 생각해startMyVisit();
로.this.startMyVisit();
.
먹어본 적 있어요?nextTick()
?이렇게.
mounted(){
this.$nextTick(() => {
this.startMyVisit()
})
},
그러면 컴포넌트가 로드를 올바르게 완료할 수 있으며startMyVisit
다음 눈금에 대한 메서드.
언급URL : https://stackoverflow.com/questions/53633763/using-computed-in-vue-js-and-when-mounted-is-called-the-computed-property-is-sti
'programing' 카테고리의 다른 글
액세스할 수 없습니다.기본 설치 후 자녀 컴포넌트에 $store(vuex) (0) | 2022.07.17 |
---|---|
Vue.js devtools Chrome 확장이 손상됨 - Vuex 탭이 비어 있고 구성 요소 탭이 새로 고침 후에만 표시됨 (0) | 2022.07.17 |
Vue 값 바인딩 문자열 연결 (0) | 2022.07.17 |
Vue.js 2.0에서 글로벌 구분 기호를 설정하는 방법 (0) | 2022.07.17 |
vuejs v-model, 다중 확인란 및 계산된 속성 (0) | 2022.07.17 |