一覧表示機能の完成
このステップでは、axios を使ってホームページの投稿一覧データを要求し、List.vue
コンポーネントにバインドする方法を学びます。
src/components
フォルダにあるList.vue
ファイルを開きます。
<script>
の下でaxios
ライブラリをインポートします:
// TODO
import axios from "axios";
data()
関数の中で、一覧データを格納するdataList
プロパティを定義します:
data() {
return {
dataList: []
};
}
created()
ライフサイクルフックの中で、一覧データを取得するためのgetList()
メソッドを呼び出します:
created() {
this.getList();
}
getList()
メソッドを実装して、public/static/data/list.json
ファイルからデータを取得します:
methods: {
getList() {
axios.get("./static/data/list.json").then((res) => {
this.dataList = res.data.data.listInfo;
});
}
}
<script>
内の完成したコードは以下の通りです:
<script>
// TODO
import axios from "axios";
export default {
data() {
return {
dataList: []
};
},
created() {
this.getList();
},
methods: {
getList() {
axios.get("./static/data/list.json").then((res) => {
this.dataList = res.data.data.listInfo;
});
}
}
};
</script>
- テンプレートでは、
v-for
ディレクティブを使って一覧項目をレンダリングします:
<template>
<div class="list">
<!-- TODO -->
<div class="list-item" v-for="item in dataList" :key="item.id">
<img class="list-pic" :src="item.imgUrl" />
<div class="list-info">
<p class="title">{{ item.title }}</p>
<p class="desc">{{ item.desc }}</p>
</div>
</div>
</div>
</template>
このステップでは、ホームページの投稿一覧データがpublic/static/data/list.json
ファイルから取得され、List.vue
コンポーネントにバインドされることが保証されます。
これらの手順に従うことで、public/static/data/list.json
ファイルからデータを取得し、望ましいレイアウトで一覧項目をレンダリングするなど、ホームページデータの動的化を完了しました。
完成した結果は以下の通りです: