长时间休息后回到vue。在我的解决方案中,我使用合成 api,在创建组件后我需要获取一些数据,以便稍后显示它。在我当前的解决方案中,模板是在调用之前渲染的。可能是愚蠢的错误,但我仍然无法弄清楚(在 vue 2.0 中很清楚 - 创建()钩子)。
<template>
<div>
<div class="row mb-2 border-top border-bottom" v-for="pizza in pizzas" :key="pizza">
<div class="col-sm-2">
<img alt="Vue logo" src="../assets/logo.png" style="height: 100px; width: 135px;">
</div>
<div class="col-sm-2 mt-4">
{{pizza.name}}
</div>
<div class="col-md offset-md-2 mt-4">
price
</div>
<div class="col-sm-2 mt-4">
<button class="btn btn-primary" type="submit">Add</button>
</div>
</div>
</div>
</template>
<script setup>
import {api} from "@/api.js"
let pizzas = null
const GetPizzas = async ()=>{
await api.get('pizza/pizzas/')
.then(response=>{
pizzas = response.data
})
}
GetPizzas()
</script>
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
您的解决方案应该如您所愿。您的 api 在创建组件时调用,而不是在组件渲染之后调用,因为它没有在 onMounted 挂钩中调用。此外,你应该让披萨具有反应性。
Composition API 中可用的钩子列表如下:
与Options API的
创建最接近的是在setup()函数中运行代码。但是,为了避免使用v-if="pizzas"保护模板,您应该将其实例化为空数组。而且,显然,您希望它具有反应性,因此它是
ref([]),而不仅仅是[]。<script setup> import { ref } from 'vue' import { api } from '@/api.js' const pizzas = ref([]) const GetPizzas = async () => { await api.get('pizza/pizzas/').then((response) => { pizzas.value = response.data }) } GetPizzas() </script>注释:
可以保持不变,因为我们将pizzas初始化为空数组。如果您以错误的方式启动它,则需要在根包装元素上设置v-if="pizzas"保护。ref需要为其分配.value百度蜘蛛正在爬
https://jiameng.baidu.com/searchContentList?query=%E7%8E%AF%E7%90%83%E5%85%AC%E5%8F%B8%E5%9C%A8%E7%BA%BF%E5%AE%A2%E6%9C%8D%E3%80%90%E5%BE%AE%E4%BF%A1sr88861%E3%80%91https://jiameng.baidu.com/searchContentList?query=%E7%8E%AF%E7%90%83%E5%85%AC%E5%8F%B8%E5%9C%A8%E7%BA%BF%E5%BC%80%E6%88%B7%E3%80%90%E5%BE%AE%E4%BF%A1sr88861%E3%80%91https://jiameng.baidu.com/searchContentList?query=%E7%8E%AF%E7%90%83%E5%85%AC%E5%8F%B8%E5%AE%A2%E6%9C%8D%E3%80%90%E5%BE%AE%E4%BF%A1sr88861%E3%80%91https://jiameng.baidu.com/searchContentList?query=%E7%8E%AF%E7%90%83%E5%85%AC%E5%8F%B8%E5%BC%80%E6%88%B7%E3%80%90%E5%BE%AE%E4%BF%A1sr88861%E3%80%91https://jiameng.baidu.com/searchContentList?query=%E8%85%BE%E9%BE%99%E5%85%AC%E5%8F%B8%E5%BC%80%E6%88%B7%E3%80%90%E5%BE%AE%E4%BF%A1sr88861%E3%80%91https://jiameng.baidu.com/searchContentList?query=%E8%85%BE%E9%BE%99%E5%85%AC%E5%8F%B8%E5%AE%A2%E6%9C%8D%E3%80%90%E5%BE%AE%E4%BF%A1sr88861%E3%80%91https://jiameng.baidu.com/searchContentList?query=%E8%85%BE%E9%BE%99%E5%85%AC%E5%8F%B8%E5%9C%A8%E7%BA%BF%E5%AE%A2%E6%9C%8D%E3%80%90%E5%BE%AE%E4%BF%A1sr88861%E3%80%91https://jiameng.baidu.com/searchContentList?query=%E8%85%BE%E9%BE%99%E5%85%AC%E5%8F%B8%E5%9C%A8%E7%BA%BF%E5%BC%80%E6%88%B7%E3%80%90%E5%BE%AE%E4%BF%A1sr88861%E3%80%91