首先,感谢那些谁将看这个。我是一个初学者与vue,所以我可能会错过一些明显的在这里,但经过几天的卡住,我在这里
在SFC上,我有一个onMounted从API(Spring Boot)获取数据。API调用工作正常,我可以在Chrome的Netwwork下看到它,响应包含我需要的数据。
我的AppLeague. vue文件
<template lang="">
<div class="row">
<div class="col-md-12">
<h3>Leagues</h3>
</div>
<div class="col-md-12">
<ul class="list-group">
<li
v-for="(leagueItem, index) in leagues"
:key="index"
class="list-group-item"
>
{{ index + 1 }}.{{ leagueItem.league_name }}
, Status:
{{ leagueItem.league_status }}, Code: {{ leagueItem.league_code }}
</li>
</ul>
</div>
</div>
</template>
<script setup lang="ts">
import { onMounted } from "vue";
import customAxios from "@/lib/customAxios";
interface League {
league_id: number,
league_name: string;
league_code: string;
league_status: string;
}
let leagues: League[];
onMounted(async () => {
await customAxios
.get<League[]>(`account/leagues`, {
withCredentials: true,
})
.then((response) => {
leagues = response.data;
});
});
</script>
我的自定义axios文件
import axios from "axios";
export const customAxios = axios.create({
baseURL: "http://localhost:8080/api/",
});
customAxios.interceptors.response.use(
(response) => response,
(error) => {
if (error.response.status === 401) {
window.location.href = '/';
}
if (error.response) {
alert(error.response.data.message);
}
}
);
export default customAxios;
在Google Chrome浏览器的网络选项卡中,我可以看到HTTP 200代码和响应:[{"league_id":1,"league_status":"created","league_name":"Test League","league_code":"Test League Code"}]
但是,这里是呈现的页面:Rendered page
如果我返回VSCode并在中更改任何内容(例如添加一个空格并保存),则页面将刷新,值将按预期显示:Rendered image after altering DOM in VSCode
我想在页面加载时显示这些值,但似乎找不到方法。我猜它在第一次加载时不起作用,因为它显示的是let leagues: League[];
的空值,并且DOM的更改强制在获取数据后获取这些值,但不确定如何强制DOM显示获取的值(如果有意义的话)。
我找不到vue3和的任何例子。
谢谢!
3条答案
按热度按时间ubby3x7f1#
也许等待 leagues 值是一个好主意。也许你会得到一个错误,因为组件在加载一些尚未加载的 leagues 属性值时失败。当你保存在VSCode中时,组件已经被挂载,你的 leagues 数据已经被获取,所以在这种情况下你不会得到这个错误。我首先想到的是:
在组件内部创建一个新的v-if,如果axios响应返回一个非空列表,那么就绑定数据,例如第6行:
lyr7nygr2#
这看起来像是React性问题。
如果你还不知道,这里有一些资源可以解释React性:
我想改变联盟的宣言:
olmpazwi3#
正如@dan-obregon在他的回答中所写的,你错过了Vue最基本的部分,它的React性。Dan的回答是不完整的,因为你不能将数组赋给React对象本身。在这种情况下,我将使用
ref
代替: