我是React中的新成员,但我构建了一个简单的应用程序来搜索GitHub用户只需输入用户名。它必须给我关于用户和他们各自的资源库的信息,但我有一个问题白衣代码:错误:未被捕获(承诺)TypeError:this.props.repos.map不是函数
错误:
Uncaught (in promise) TypeError: this.props.repos.map is not a function
Uncaught (in promise) TypeError: Cannot read property '_currentElement' of null
代码:
var React = require('react');
var UserRepos = React.createClass({
getInitialState: function() {
return {
reposCount: 0,
}
},
componentWillReceiveProps: function (props) {
console.log(props);
this.setState({reposCount: props.repos.length});
},
render: function() {
var repos = this.props.repos.map(function (repo, key) {
return (
<div key={key} className="thumbnail">
<div className="caption">
<h3>{repo.name}
<span className="badge">{repo.stargazers_count} STARS</span>
</h3>
<p>{repo.description}</p>
<p>
<a href={repo.html_url} className="btn btn-primary" role="button">Repository</a>
<a href={repo.html_url + '/issues'} className="btn btn-default" role="button">Issues ({repo.open_issues}) </a>
</p>
</div>
</div>
);
});
return (
<div>
<h2>{this.state.reposCount} repositories</h2>
{repos}
</div>
)
}
});
module.exports =UserRepos;
这意味着无论你用什么来初始化'props.repos'都不是一个数组。 – Pointy
你在渲染函数中为this.prop.repos获取了什么值 –
在你的props.repos被设置之前你的渲染被调用。在渲染中,通过检查props.repos是否存在来解决这个问题;如果不是,则将其设置为空数组。当props.repos确实被创建时,渲染将被再次调用,然后会正常工作。 –