ViV*_*ekH 9 javascript jquery reactjs
所以说我有一个阵列
var arr=["one", "two", "three", "four"];
Run Code Online (Sandbox Code Playgroud)
我有一个组件CardContainer
class CardContainer extends React.Component {
render() {
return (
<div>
<Card/>
</div>
);
}
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是根据数组"arr"的长度/数量创建一些Card组件,并从数组中设置Card组件中div的文本.
class Card extends React.Component {
render() {
return (
<div>
<!--Print arr[i] val using this.props? -->
</div>
);
}
}
Run Code Online (Sandbox Code Playgroud)
所以我的输出将是4张卡片,每张卡片上分别印有数组值.
这是我提出的不成功的
class CardContainer extends React.Component {
render() {
var arr=["one", "two", "three", "four"];
var elements=[];
for(var i=0;i<arr.length;i++){
elements.push(<Card value=arr[i]/>);
}
return (
<div>
{elements}
</div>
);
}
}
Run Code Online (Sandbox Code Playgroud)
paw*_*wel 13
你很接近,只是忘了elements用卡填充数组,所以在循环结束后它仍然是空的.虽然使用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", "two", "three", "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>
);
}
}
Run Code Online (Sandbox Code Playgroud)
你几乎猜对了!
你错过了周围的花括号arr[i]。所以一个工作代码看起来像:
class CardContainer extends React.Component {
render() {
var arr=["one", "two", "three", "four"];
var elements=[];
for(var i=0;i<arr.length;i++){
elements.push(<Card value={arr[i]} />);
}
return (
<div>
{elements}
</div>
);
}
}
Run Code Online (Sandbox Code Playgroud)
但是我建议您使用map()遍历数组:
map为数组中的每个元素依次调用一次提供的回调函数,并根据结果构造一个新数组
所以试试这个:
class CardContainer extends React.Component {
render() {
var arr=["one", "two", "three", "four"];
return (
<div>
{arr.map(item => <Card key={item} value={item} />)}
</div>
);
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以Card像这样访问你的值:
class Card extends React.Component {
render() {
return (
<div>
{this.props.value}
</div>
);
}
}
Run Code Online (Sandbox Code Playgroud)
您还可以将Card组件重写为无状态功能组件,如下所示:
const Card = (props) =>
return (
<div>
{props.value}
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
如果你想让它更紧凑:
const Card = props => <div>{props.value}</div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18887 次 |
| 最近记录: |