Vue3+TS实现接口数据循环渲染与条件背景色展示
·
实现步骤
-
定义接口类型
在TypeScript中定义接口返回的数据类型,确保类型安全。假设接口返回的数组包含type字段用于区分不同类型:interface DataItem { id: number; name: string; type: 'success' | 'warning' | 'error'; // 假设有三种类型 } -
调用接口获取数据
使用axios或fetch调用接口,并将返回的数据存储在响应式变量中:import { ref } from 'vue'; import axios from 'axios'; const dataList = ref<DataItem[]>([]); const fetchData = async () => { try { const response = await axios.get('/api/data'); dataList.value = response.data; } catch (error) { console.error('Error fetching data:', error); } }; // 生命周期钩子中调用 onMounted(() => { fetchData(); }); -
动态绑定样式
在模板中使用v-for循环渲染数据,根据type字段动态绑定背景颜色:<template> <div v-for="item in dataList" :key="item.id" :class="getItemClass(item)"> {{ item.name }} </div> </template> -
定义样式类名逻辑
在<script>中编写方法,根据type返回对应的CSS类名:const getItemClass = (item: DataItem) => { switch (item.type) { case 'success': return 'bg-success'; case 'warning': return 'bg-warning'; case 'error': return 'bg-error'; default: return ''; } }; -
CSS样式定义
在<style>中定义不同类名对应的背景颜色:.bg-success { background-color: #4CAF50; color: white; } .bg-warning { background-color: #FFC107; color: black; } .bg-error { background-color: #F44336; color: white; }
完整代码示例
<template>
<div>
<div v-for="item in dataList" :key="item.id" :class="getItemClass(item)">
{{ item.name }}
</div>
</div>
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue';
import axios from 'axios';
interface DataItem {
id: number;
name: string;
type: 'success' | 'warning' | 'error';
}
const dataList = ref<DataItem[]>([]);
const fetchData = async () => {
try {
const response = await axios.get('/api/data');
dataList.value = response.data;
} catch (error) {
console.error('Error fetching data:', error);
}
};
const getItemClass = (item: DataItem) => {
switch (item.type) {
case 'success':
return 'bg-success';
case 'warning':
return 'bg-warning';
case 'error':
return 'bg-error';
default:
return '';
}
};
onMounted(() => {
fetchData();
});
</script>
<style scoped>
.bg-success {
background-color: #4CAF50;
color: white;
padding: 8px;
margin: 4px;
}
.bg-warning {
background-color: #FFC107;
color: black;
padding: 8px;
margin: 4px;
}
.bg-error {
background-color: #F44336;
color: white;
padding: 8px;
margin: 4px;
}
</style>
关键点说明
- 类型安全:通过
interface明确定义数据结构,避免运行时错误。 - 动态样式:根据数据字段动态绑定类名,实现灵活样式切换。
- 代码组织:逻辑与模板分离,通过方法
getItemClass集中处理样式逻辑。
通过以上步骤,可以实现根据接口返回的数据类型动态渲染不同背景颜色的效果。
更多推荐

所有评论(0)