【发布时间】:2017-07-26 16:19:28
【问题描述】:
我是 React 新手,但我正在构建一个简单的应用程序来搜索 GitHub 用户,只需输入他们的用户名。它必须为我提供有关用户及其各自存储库的信息,但我的代码有问题:
错误:
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的东西不是一个数组。 -
渲染函数中的 this.prop.repos 有什么价值
-
你的渲染在你的 props.repos 设置之前被调用。在渲染中,通过检查 props.repos 是否存在来解决此问题;如果没有,则将其设置为空数组。当 props.repos 被创建后,渲染将被再次调用,然后就可以正常工作了。
标签: javascript node.js reactjs