vue 가 자세 한 페이지 를 돌 릴 때 created 방법 으로 데 이 터 를 업데이트 하지 않 습 니 다.
4426 단어 vue점프created데이터업데이트 하지 않 음
처음에 저 는 쿠키 로 이 파 라 메 터 를 저장 해서 상세 페이지 에서 이 파 라 메 터 를 찾 았 는데 처음 찾 은 것 만 정확 한 것 을 발 견 했 습 니 다.아버지 페이지 로 돌아 가 상세 페이지 에 들 어가 면 얻 은 데 이 터 는 원래 의 것 과 똑 같 아서 변 하지 않 았 습 니 다.(router 가 뛰 어 넘 을 때 페이지 를 새로 고치 지 않 기 때문에 제 가 얻 은 값 은 영원히 업데이트 되 지 않 습 니 다)쿠키 에 문제 가 있 는 줄 알 고 query 가 가지 고 있 는 매개 변 수 를 사용 하여 뛰 었 습 니 다.sessionStorage 방법 으로 액세스 할 수 없 었 습 니 다.
다음 해결 방법 을 보 세 요.
나 도 그 중의 어떤 원리 인지 모 르 겠 지만 문 제 를 해 결 했 고 문 서 를 보 았 지만 이 두 가지 방법의 구체 적 인 차 이 를 이해 하지 못 했다.
보충 지식:vue 중성자 구성 요소 의 created,mounted 갈고리 에서 props 의 값 문 제 를 얻 을 수 없습니다.
부자 모듈 통신
이 홈 페이지 는 분명 하고 간단 합 니 다.부모 구성 요소 에 서 는 v-bind 바 인 딩 전송 을 사용 하고 하위 구성 요 소 는 props 로 받 으 면 됩 니 다.
예 를 들 면:
부모 구성 요소 중
<template>
<div>
<head-top></head-top>
<section class="data_section">
<header class="chart-title"> </header>
<el-row :gutter="20" class="chart-head">
<el-col :xs="24" :sm="12" :md="6" :lg="6"><div class="grid-content data-head blue-head"> :</div></el-col>
<el-col :xs="24" :sm="12" :md="6" :lg="6"><div class="grid-content data-head"> <span>{{number}}</span></div></el-col>
<el-col :xs="24" :sm="12" :md="6" :lg="6"><div class="grid-content data-head"> <span>{{amount}}</span></div></el-col>
<el-col :xs="24" :sm="12" :md="6" :lg="6"><div class="grid-content data-head"> <span>{{profits}}</span></div></el-col>
</el-row>
</section>
<chart :chartData="chartData"></chart>
</div>
</template>
<script>
data(){
return {
number: null,
amount: null,
profits: null,
chartData: [10,10,10]
}
},
</script>
하위 구성 요소 중
export default {
props: ['chartData']
}
이 경우 하위 구성 요소 의 methods 에서 props 의 값 을 가 져 오 려 면 this.chart Data 를 직접 사용 하면 됩 니 다.그러나 쓰기 상황 에서 chartData 의 값 은 고정 적 인 것 이 아니 라 동적 으로 가 져 온 것 입 니 다.이 경우 methods 에서 chartData 를 가 져 올 수 없 거나 기본 값 을 가 져 올 수 있 습 니 다.
예 를 들 면 아래 의 이 상황.
부모 구성 요소 중
<script>
data(){
return {
number: null,
amount: null,
profits: null,
chartData: []
}
},
mounted(){
this.getStatistics();
},
methods: {
//
getStatistics(){
console.log(' ')
axios.post(api,{
}).then((res) => {
this.number = res.data.domain.list[0].number;
this.amount = res.data.domain.list[0].amount;
this.profits = res.data.domain.list[0].profits;
this.chartData = [this.number,this.amount,this.profits];
}).catch((err) => {
console.log(err);
})
},
},
</script>
이 때 하위 구성 요소 의 methods 에서 this.chart Data 를 사용 하면 존재 하지 않 습 니 다(비어 있 기 때 문 입 니 다)이 상황 은 워 치 로 처리 하 겠 습 니 다.
해결 방법 은 다음 과 같다.
watch 사용 하기
props: ['chartData'],
data(){
return {
cData: []
}
},
watch: {
chartData: function(newVal,oldVal){
this.cData = newVal; //newVal chartData
this.drawChart();
}
},
chart Data 의 값 을 감청 합 니 다.비어 있 을 때 트리거 됩 니 다.이 럴 때 가 져 올 수 있 습 니 다.값 을 받 은 후에 해 야 할 처리 방법 도 watch 에서 실행 해 야 합 니 다!위 에서 vue 를 해결 하고 상세 한 페이지 를 넘 길 때 created 방법 으로 데 이 터 를 업데이트 하지 않 습 니 다.문 제 는 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.참고 하 시기 바 랍 니 다.여러분 들 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.