使用promise返回了一个数组,但是传入组件会报错,提示返回的数组是一个promise
this.service.getDataDict(dataType)()为异步请求方法, options是这个方法返回的数据,我这里返回的是个数组,但是还报错说是要的数组而不是promise
:options="selectOptions()">
selectOptions() {
let selectOption = this.field.options.selectOption
return selectOption.selectSource === 1 ? selectOption.options : this.getDictData(selectOption.dataDictionary)
},
async getDictData(dataType) {
const data = await this.service.getDataDict(dataType)() ?? [];
return data?.map((t) => ({
label: t.dataName,
value: t.dataValue,
})) ?? [];
},
Invalid prop: type check failed for prop "options". Expected Array, got Promise
不报错
试试调整为这样
selectOptions() {
return new Promise((reslove,reject)=>{
let selectOption = this.field.options.selectOption;
let dataDictionary = this.getDictData(selectOption.dataDictionary);
reslove(selectOption.selectSource === 1 ? selectOption.options : dataDictionary);
});
}
挨个打印下具体排查一下
:options="selectOptions()"
你这里selectOptions执行getDictData返回的是一个promise,要修改这里,比如写一个变量a,:options="a"
,在selectOptions中主动为a赋值