从对象数组渲染React组件

我有一些称为站的数据,它是一个包含对象的数组。

stations : [

{call:'station one',frequency:'000'},

{call:'station two',frequency:'001'}

]

我想为每个数组位置渲染一个ui组件。到目前为止,我可以写

 var stationsArr = []

for (var i = 0; i < this.data.stations.length; i++) {

stationsArr.push(

<div className="station">

{this.data}

</div>

)

}

然后渲染

render(){

return (

{stationsArr}

)

}

问题是我要打印所有数据。相反,我只想显示一个像这样的键,{this.data.call}但是什么也不打印。

如何遍历此数据并为数组的每个位置返回一个新的UI元素?

回答:

您可以将工作站列表映射到ReactElements。

使用React> =

16时,可以从同一组件返回多个元素,而无需额外的html元素包装器。从16.2开始,有一种新的语法<>可以创建片段。如果这不起作用或您的IDE不支持,则可以<React.Fragment>改用。在16.0和16.2之间,可以对片段使用非常简单的polyfill。

尝试以下

// Modern syntax >= React 16.2.0

const Test = ({stations}) => (

<>

{stations.map(station => (

<div className="station" key={station.call}>{station.call}</div>

))}

</>

);

// Modern syntax < React 16.2.0

// You need to wrap in an extra element like div here

const Test = ({stations}) => (

<div>

{stations.map(station => (

<div className="station" key={station.call}>{station.call}</div>

))}

</div>

);

// old syntax

var Test = React.createClass({

render: function() {

var stationComponents = this.props.stations.map(function(station) {

return <div className="station" key={station.call}>{station.call}</div>;

});

return <div>{stationComponents}</div>;

}

});

var stations = [

{call:'station one',frequency:'000'},

{call:'station two',frequency:'001'}

];

ReactDOM.render(

<div>

<Test stations={stations} />

</div>,

document.getElementById('container')

);

不要忘记key属性!

https://jsfiddle.net/69z2wepo/14377/

以上是 从对象数组渲染React组件 的全部内容, 来源链接: utcz.com/qa/415590.html

回到顶部