如何在React Native中修复“无法读取未定义的属性'映射'”

时间:2019-08-02 11:49:51

标签: javascript reactjs

我正在将地图传递给我的所有posts变量,以便我的所有帖子都可以显示为单个帖子,但是它不断出现错误

我尝试使用react网站上的Reactjs文档解决它,它显示的代码几乎与我的代码相同。

import PropTypes from 'prop-types';
import PostItem from './PostItem';

class PostFeed extends Component {
  render() {
    const { posts }  = this.props;
    const list = posts.map((post) => <PostItem 
            key={post._id} 
            posts={post}
         />
        );
    return (
        {list}
    );
  }
}

PostFeed.propTypes = {
  posts: PropTypes.array.isRequired
};

export default PostFeed;

我希望每个帖子都会在postItem组件中显示为单个帖子

Console output

2 个答案:

答案 0 :(得分:0)

posts可能是异步操作的结果,在函数执行其工作时,其值不可用。因此,它应该具有默认值或在具有默认值之前被检查。执行以下操作:

if(this.props.posts && Array.isArray(this.props.posts) && this.props.posts.length > 0)
//then map

答案 1 :(得分:0)

该错误表示,当PostFeed当时第一次安装props时,此错误不可用。

您可以检查数据是否可用,例如

let list = "Loading...";
if(posts && posts.length > 0){
  list = posts.map((post) => <PostItem key={post._id} posts={post} /> );
}