[英]react render list of components using spread attributes
I want to render a list of components using {...props}
and I seem to be missing a point here because I've read almost everything about passing props via Link
and react-router
and spreading attributes and I'm still not there. 我想使用{...props}
渲染组件列表,这里似乎遗漏了一点,因为我已经阅读了有关通过Link
和react-router
传递prop以及传播属性的几乎所有内容,但我仍然不在那里。
I want to render a list of thumbnails, and I don't know where to place the var options
object in order to fix the this.props.partnersData is undefined
error that I'm getting now. 我想呈现一个缩略图列表,并且我不知道在哪里放置var options
对象才能修复this.props.partnersData is undefined
我现在得到的this.props.partnersData is undefined
错误。
You can see full code for this here: https://github.com/eyerean/company-website 您可以在这里看到完整的代码: https : //github.com/eyerean/company-website
The working version of partners.jsx
is this, and in comments I have the desired version: partners.jsx
的工作版本是这样,在注释中,我具有所需的版本:
var React = require('react');
var Thumbnail = require('./thumbnail');
// var options= {
// partnersData: [{
// src:"http://www.clker.com/cliparts/O/v/c/b/i/6/generic-logo.svg",
// header:"companyName",
// link:"//example.com/"
// },{
// src:"http://www.clker.com/cliparts/O/v/c/b/i/6/generic-logo.svg",
// header:"companyName",
// link:"//example.com/"
// }]
// };
module.exports = React.createClass({
render: function(){
// console.log('props in partners: ', this.props);
// var list = this.props.partnersData.map(function(thumbnailProps){
// return <Thumbnail {...thumbnailProps} />
// });
//
// return <div>
// {list}
// </div>
return <div>
<h2>Partners</h2>
<div className="row">
<div className="col-md-4">
<Thumbnail
src="http://www.clker.com/cliparts/O/v/c/b/i/6/generic-logo.svg"
header="companyName"
link="//example.com/"
/>
</div>
<div className="col-md-4">
<Thumbnail
src="http://www.clker.com/cliparts/O/v/c/b/i/6/generic-logo.svg"
header="companyName"
link="//example.com/"
/>
</div>
<div className="col-md-4">
<Thumbnail
src="http://www.clker.com/cliparts/O/v/c/b/i/6/generic-logo.svg"
header="companyName"
link="//example.com/"
/>
</div>
</div>
<div className="row">
<div className="col-md-4">
<Thumbnail
src="http://www.clker.com/cliparts/O/v/c/b/i/6/generic-logo.svg"
header="companyName"
link="//example.com/"
/>
</div>
<div className="col-md-4">
<Thumbnail
src="http://www.clker.com/cliparts/O/v/c/b/i/6/generic-logo.svg"
header="companyName"
link="//example.com/"
/>
</div>
</div>
</div>
}
});
I want to avoid that ugly copy-pasted list of Thumbnails over there.. 我想避免在那张丑陋的复制粘贴缩略图列表。
Partners are rendered with Link
in community.jsx
: 合作伙伴通过community.jsx
Link
呈现:
module.exports = React.createClass({
render: function(){
return <div className="container-fluid">
<div className="col-md-3 sidebar fix">
<ul className="nav nav-sidebar">
<li className="active"><Link to="community/partners">Partners</Link></li>
<li><Link to="community/blog">Blog</Link></li>
</ul>
</div>
<div className="container col-md-9">
<h2>Community</h2>
<LoremIpsum />
</div>
</div>
}
});
In partners.jsx, do following. 在partners.jsx中,执行以下操作。 There is no props passed to partners components, it will have it's own state which will be your options var. 没有道具传递给合作伙伴组件,它将具有自己的状态,这将是您的选择变量。
module.exports = React.createClass({
getInitialState: function() {
return {
partnersData: [{
src:"http://www.clker.com/cliparts/O/v/c/b/i/6/generic-logo.svg",
header:"companyName",
link:"//example.com/"
},{
src:"http://www.clker.com/cliparts/O/v/c/b/i/6/generic-logo.svg",
header:"companyName",
link:"//example.com/"
}]
};
},
render: function(){
console.log('props in partners: ', this.state);
var list = this.state.partnersData.map(function(thumbnailProps){
return <Thumbnail {...thumbnailProps} />
});
return <div>
{list}
</div>
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.