Vue.js - 无效的道具:道具“src”的类型检查失败。预期的字符串,对象,得到了 Promise
Posted
技术标签:
【中文标题】Vue.js - 无效的道具:道具“src”的类型检查失败。预期的字符串,对象,得到了 Promise【英文标题】:Vue.js - Invalid prop: type check failed for prop "src". Expected String, Object, got Promise 【发布时间】:2021-05-19 17:26:56 【问题描述】:我正在尝试将图像插入到我的 firebase 的 firestore 和存储中并将其显示在 v-card 上
我的 v-card 代码:
<v-row>
<v-col cols="3" v-for="massage in massages" :key="massage.id">
<v-card
class="mx-auto"
max-
>
<v-img
v-if="massage.image"
class="white--text align-end"
:src="massage.image"
>
</v-img>
<v-card-title>massage.title</v-card-title>
<v-card-text class="text--primary">
<div>massage.shortDescription</div>
</v-card-text>
<v-card-actions>
<v-btn
color="orange"
text
@click="goTodetail(massage.id)"
>
Explore
</v-btn>
</v-card-actions>
</v-card>
</v-col>
</v-row>
我的脚本:
<script>
import db, storage from '@/firebase.js';
export default
el: '#vue',
name: 'BaseHeading',
// massId:this.$route.params.Pid,
components:
BaseInfoCard: () => import('@/components/base/InfoCard'),
,
data()
return
massages:[],
showmassage: false,
showrehabilitation: false,
showsupport: false,
modal_1: true,
modal_2: false,
modal_3: false,
,
created()
try
db.collection("massages").get().then((querySnapshot) =>
querySnapshot.forEach((doc) =>
let img = ''
if(doc.data().image)
img = storage.ref().child(doc.data().image).getDownloadURL()
this.massages.push(
id: doc.id,
title: doc.data().title,
shortDescription: doc.data().shortDescription,
image: img
)
)
);
catch(e)
console.log(e)
,
</script>
我认为它提供了承诺,但无法弄清楚如何处理它。错误是无效的道具:道具“src”的类型检查失败。预期的字符串,对象,得到了 Promise。 我尝试将以下内容放入道具中:
props:
src: [ String, Object],
,
但我仍然有同样的错误
【问题讨论】:
【参考方案1】:在检索图像 URL 时解析 Promise,然后将其传递到 massage
对象。
created()
try
db.collection('massages')
.get()
.then((querySnapshot) =>
querySnapshot.forEach(async (doc) =>
// start pertinent change
if (doc.data().image)
storage
.ref()
.child(doc.data().image)
.getDownloadURL()
.then((url) =>
this.massages.push(
id: doc.id,
title: doc.data().title,
shortDescription: doc.data().shortDescription,
image: url,
)
)
else
this.massages.push(
id: doc.id,
title: doc.data().title,
shortDescription: doc.data().shortDescription,
)
// end pertinent change
)
)
catch (e)
console.log(e)
【讨论】:
以上是关于Vue.js - 无效的道具:道具“src”的类型检查失败。预期的字符串,对象,得到了 Promise的主要内容,如果未能解决你的问题,请参考以下文章
道具类型失败:“object”类型的道具“defaultValue”无效
警告:失败的道具类型:提供给“Carousel”的“对象”类型的无效道具`数据`,预期`数组`
道具类型失败:提供给“TextInput”React Native 的“对象”类型的无效道具“值”
如何将 ref 作为道具传递:[Vue 警告]:无效的道具:道具“containerRef”的类型检查失败。预期对象,得到 HTMLDivElement?