VUEでAPIからJSON形式で返されたn個のメッセージをn行で画面に表示
やりたいこと
バックエンドのAPIに何かしらの処理を投げて返ってきたresponse(JSON形式)に含まれるメッセージを画面に表示したいが、何行あるかは結果ごとに異なる。
画面には返ってきたメッセージがあればすべて表示したい。
※「何行あるか」の情報もJSONに含まれるものとする。
実装
v-forディレクティブを使用することで配列内の複数個のメッセージを表示
<script lang="ts">
//メッセージ格納用のオブジェクトを宣言
type TypeMessageList={
count:number,
messages:string[],
}
const Messages = reactive<TypeMessageList>({
count:0,
messages:[],
})
async function throwAPI (){
try {
//メッセージ取得API
const res = await axios.get("/getmessageapi")
//オブジェクト初期化
Messages.count=0;
Messages.messages=[];
//メッセージの行数を取得し、行数分ループすることでメッセージを配列に格納
Messages.count=res.data.count;
for(let i = 1;i<=Messages.count;i++){
Messages.push(res.data.messages[i].message);
}
} catch (err) {
//ここはエラー処理
}
<script>
<template>
//メッセージ取得ボタン
<button v-on:click="throwAPI()" >メッセージを取得する</button>
//v-forでループし、メッセージを表示
<div v-for="message in Messages.messages" :key="message">
{{ message }}
</div>
</template>