Vue.js는 멈춘 포인트 메모 (API로 데이터 가져 오기)
다양한 기사와 블로그의 출처를 참고하여,
기본을 소홀히 하면 츠케가 돌아왔으므로, 자계를 담아 메모합니다.
부모 - 자식 구성 요소에서 데이터 전달 → 페이지에서 표시
만들고 싶은 모양
(親コンポーネント) (子コンポーネント)
API叩いてデータ取得(json) → 親からデータを受け取り、templateで整形
↑ |
(pages A) request 'A' 返却 ←
(pages B) request 'B' 返却 ←
(pages C) request 'C' 返却 ←
아래에서 소개되는 팩토리 패턴 API를 참고하여 소규모 앱을 만들고 있습니다.
【Vue.js】Web API 통신의 디자인 패턴 (개인적 모범 사례)
빠진 포인트 「부모 comp → 아이 comp → pages의 흐름으로 props라고 생각했다」
index.vue
<template>
<div id="app">
<p>index.vueの内容です</p>
<child-component/>
</div>
</template>
<script>
import Child from '../components/Child.vue';
export default {
components: {
'child-component': Child,
}
}
</script>
페이지 아래의 index.vue에서 Child를 가져 오고 ...
Child.vue
<template>
<p>子コンポーネントの内容です</p>
<p>{{ info }}</p>
</template>
<script>
export default {
name: 'child',
props: ['info']
}
</script>
Child는 Parent에서 props로 받았습니다.
apiComponent.vue
<!--親コンポーネント-->
<template>
<child :info="info" />
</template>
<script>
import SpotList from './SpotList.vue'
import Child from './Child.vue';
import {RepositoryFactory} from '../api/RepositoryFactory'
const SpotsRepository = RepositoryFactory.get('spots');
export default {
name: "api-component",
components: {
'spotlist': SpotList,
'child': Child,
},
data() {
return {
isLoading: false,
info: [], //取得したデータはinfoに格納する
};
},
created() {
this.fetch()
},
methods: {
async fetch() {
this.isLoading = true;
const {data} = await SpotsRepository.get(); // データ取得
this.isLoading = false;
this.info = data;
}
}
}
</script>
부모는 API에서 얻은 데이터를 배열에 넣고
v-bind
아무것도 표시되지 않습니다 (슬픈)
결론적으로는 pages측의 Import를 부모 컴포넌트로 바꾸면 표시되었습니다.
index.vue
<template>
<div id="app">
<api-component />
</div>
</template>
<script>
import ApiComponent from '../components/apiComponent.vue';
export default {
components: {
'api-component': ApiComponent,
}
}
</script>
낙타 케이스, 케밥 케이스 등 기재 방법이 다릅니다?
데이터 반영을
mounted
로 하는? 등 여러가지 시도했는데 잘 가지 않고 시간을 보냈습니다.v-bind
등이 얽힌 장소는, 컴퍼넌트간의 관계에 주의하지 않으면 안 됩니다. . .
Reference
이 문제에 관하여(Vue.js는 멈춘 포인트 메모 (API로 데이터 가져 오기)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/aoitele/items/0044455cfaa3859b396d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)