当我加载我的应用时,来自firebase的数据将在componentdidmount
中获取。我目前正在通过postComments={comments}
作为道具。但是在此之前我的应用程序崩溃了
无法阅读属性' id'未定义的
在线
const comments = this.props.comments[post.id] || [];
这是因为我的帖子尚未提取。如何在componentdidmount
激活之前防止此崩溃发生
import React from 'react';
import Photo from './photo';
import Comments from './Comments'
class Single extends React.Component {
render() {
console.log(this.props)
const {posts, match} = this.props;
const i = this.props.posts.findIndex((post) => post.id === match.params.id);
const post = this.props.posts[i];
const comments = this.props.comments[post.id] || [];
return (
<div className="single-photo">
<Photo key={i} post={post} i={i} {...this.props} />
<Comments {...this.props} postComments={comments} />
</div>
)
}
};
export default Single;
答案 0 :(得分:0)
我认为你应该添加这个测试:
const comments = (post && this.props.comments[post.id]) || [];
答案 1 :(得分:0)
有很多方法可以解决这个问题,但我只想补充一下:
const comments = this.props.comments[post.id] === undefined ? [] : this.props.comments[post.id]