所以说我有一个阵列
var arr=["one","two","three","four"];
我有一个组件
CardContainer
class CardContainer extends React.Component {
render() {
return (
<div>
<Card/>
</div>
);
}
}
我想要做的是
根据数组“arr”的长度/数量创建一些Card组件,
并且
从数组中设置Card组件中div的文本.
class Card extends React.Component {
render() {
return (
<div>
<!--Print arr[i] val using this.props? -->
</div>
);
}
}
所以我的输出将是4张卡,
每张卡上单独打印的数组值.
这是我提出的不成功的
class CardContainer extends React.Component {
render() {
var arr=["one","four"];
var elements=[];
for(var i=0;i<arr.length;i++){
elements.push(<Card value=arr[i]/>);
}
return (
<div>
{elements}
</div>
);
}
}
解决方法
你很接近,只是忘了用卡片填充元素数组,所以在循环结束后它仍然是空的.虽然使用map作为其他人建议是在React中最常用的方法,但它仍然只是生成一个组件数组,这些组件也可以使用for循环生成:
https://jsfiddle.net/mn0jy5v5/
class Card extends React.Component {
render() {
return (
<div>
{ this.props.value }
</div>
);
}
}
class CardContainer extends React.Component {
render() {
var arr=["one","four"];
var elements=[];
for(var i=0;i<arr.length;i++){
// push the component to elements!
elements.push(<Card value={ arr[i] } />);
}
/* the for loop above is essentially the same as
elements = arr.map( item => <Card value={ item } /> );
The result is an array of four Card components. */
return (
<div>
{elements}
</div>
);
}
}