【发布时间】:2019-07-12 21:11:24
【问题描述】:
我正在尝试使用 Firestore 中的数据渲染我的 Guild 组件。我将 Firestore 中的数据作为数组放入我的状态,然后当我调用组件并尝试渲染它时,什么都没有显示。我想相信我在这里做错了什么(很长时间没有使用 React),但我没有收到任何错误或警告,所以我不确定到底发生了什么。
Guilds.js
<Col>
<Card>
<CardBody>
<CardTitle className={this.props.guildFaction}>{this.props.guildName}</CardTitle>
<CardSubtitle>{this.props.guildServer}</CardSubtitle>
<CardText>{this.props.guildDesc}</CardText>
</CardBody>
</Card>
</Col>
渲染功能
renderCards() {
var guildComp = this.state.guilds.map(guild => {
console.log(guild)
return <Guilds
key={guild.id}
guildFaction={guild.guildFaction}
guildServer={guild.guildServer}
guildName={guild.guildName}
guildDesc={guild.guildDesc} />
})
return <CardDeck>{guildComp}</CardDeck>
}
获取 Firestore 数据
guildInfo() {
Fire.firestore().collection('guilds')
.get().then(snapshot => {
snapshot.forEach(doc => {
this.setState({
guilds: [{
id: doc.id,
guildDesc: doc.data().guildDesc,
guildFaction: doc.data().guildFaction,
guildName: doc.data().guildName,
guildRegion: doc.data().guildRegion,
guildServer: doc.data().guildServer
}]
})
console.log(doc.data().guildName)
})
})
}
更新:已解决,修复在渲染函数中。
【问题讨论】:
-
你能分享你从fire store获取数据的代码吗?也许是响应的控制台日志?
-
@WilliamChou 对不起,我写这篇文章的速度很快,继续寻找我缺少的东西。显然在这里发布太长了,所以我必须将其发布在粘贴箱中。编辑:pastebin.com/Lw4XGNJ4
-
代码是否曾到达
then的内部?如果有,snapshot中是否有数据?console.log()是否打印任何内容? -
@FrankvanPuffelen 是的,它打印出数据库中仅有的 2 列。能拿到数据,就是不能让公会组件渲染
-
嗯,好的。如果调用
setState()时使用了数据库中的正确数据,恐怕我不是最适合提供帮助的人。
标签: javascript reactjs google-cloud-firestore render jsx