반응형
Vue js 자식 구성 요소에서 정의되지 않은 소품.하지만 그 대본에서만
나는 이제 막 Vue를 사용하기 시작했고 예상치 못한 행동을 경험했다.부모 구성 요소에서 자식 구성 요소로 소품을 전달하는 것에 대해 나는 아이의 템플릿에 있는 소품에는 접근할 수 있었지만, 아이의 대본에는 접근할 수 없었다.그러나 부모 템플릿(마스터 div)의 v-if 지시어를 사용했을 때 자식 스크립트와 자식 템플릿의 소품 모두에 액세스할 수 있었다.여기에 설명을 해주시면 감사하겠는데, 이 코드를 더 잘 만들 수 있는 방법이 없을까?아래 코드를 참조하십시오.고마워요.
상위 구성 요소:
<template>
<div v-if="message">
<p>
{{ message.body }}
</p>
<answers :message="message" ></answers>
</div>
</template>
<script>
import Answers from './Answers';
export default {
components: {
answers: Answers
},
data(){
return {
message:""
}
},
created() {
axios.get('/message/'+this.$route.params.id)
.then(response => this.message = response.data.message);
}
}
</script>
하위 구성 요소
<template>
<div class="">
<h1>{{ message.id }}</h1> // works in both cases
<ul>
<li v-for="answer in answers" :key="answer.id">
<span>{{ answer.body }}</span>
</li>
</ul>
</div>
</template>
<script>
export default{
props:['message'],
data(){
return {
answers:[]
}
},
created(){
axios.get('/answers/'+this.message.id) //only worls with v-if in parent template wrapper
.then(response => this.answers = response.data.answers);
}
}
</script>
this.message.id
와만 통하다v-if
왜냐하면 때때로 message
사물이 아니다.
메시지 개체를 검색하는 상위 구성 요소에서 수행 중인 호출은 비동기식입니다.즉, 자식 구성 요소가 로드되기 전에 통화가 완료되지 않는 경우.그럼 자식 구성 요소가 로드되면message=""
. 그것은 가지고 있는 물체가 아니다.id
재산언제message=""
그리고 당신은 실행하려고 노력한다.this.message.id
당신은 실수를 한다 왜냐하면 그것이 없기 때문이다.id
끈의 속성
계속 사용할 수 있음v-if
, 가장 좋은 방법일 수 있으며, 또는 자식 구성 요소의 ajax 호출이 다음과 같은 경우에 실행되지 않도록 방지하는 방법message
로 이동하는 동안 대상이 아니다.updated
.
반응형
'programing' 카테고리의 다른 글
Typecript에서 작성한 사용자 정의 React 후크를 npm에 게시하려면 어떻게 해야 하는가? (0) | 2022.04.07 |
---|---|
vuej에서 단위 테스트 (0) | 2022.04.07 |
Vue 구성 요소의 Vuex 돌연변이에 대한 호출을 테스트하는 방법 (0) | 2022.04.07 |
useFooController/useFooHook을 통해 useContext를 사용하는 구성 요소의 렌더 제한 (0) | 2022.04.07 |
중복 인덱스로 판다 줄 제거 (0) | 2022.04.06 |