情况一,字段类型不匹配
考虑option的value值的字段类型是否和api返回的字段类型一致,如果一个为字符串一个为数字类型是无法匹配上的
<template>
<div>
<el-select
v-model="value"
size="large"
style="width: 240px">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select >
</div>
</template>
<script setup>
import { ref, reactive, onMounted } from 'vue'
import axios from 'axios';
const options = [
{
value: 'Option1',
label: '1',
},
{
value: 'Option2',
label: '2',
},
]
const value = ref("")
const apiFun = async()=>{
//接口返回的data结构
/*
{
selectValue:1
}
*/
const data = await axios.get("****url****")
//解决方法,转成同样类型
value.value =data.selectValue.toString()
}
</script>
情况二,响应式失效
字段类型能对上,但是响应式失效了,这个时候要使用key强制刷新组件
<template>
<div>
<el-select
v-model="value"
size="large"
:key="index"
style="width: 240px">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select >
</div>
</template>
<script setup>
import { ref, reactive, onMounted } from 'vue'
import axios from 'axios';
const options = [
{
value: 'Option1',
label: '1',
},
{
value: 'Option2',
label: '2',
},
]
const value = ref("")
const index = ref(0)
const apiFun = async()=>{
//接口返回的data结构
/*
{
selectValue:"2"
}
*/
const data = await axios.get("****url****")
value.value =data.selectValue
//解决方法,强制刷新组件
index +=1
}
</script>