从对象数组渲染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.0const 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