객체 배열에서 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 사이 에서는 조각에 매우 간단한 폴리 필 을 사용할 수 있습니다 .
다음을 시도하십시오
// 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/
저와 같은 초보자에게는 조금 덜 혼란스러운 대답이 있습니다. map
구성 요소 렌더링 방법 내에서 사용할 수 있습니다 .
render () {
return (
<div>
{stations.map(station => <div> {station} </div>)}
</div>
);
}
this.data
아마도 모든 데이터가 포함되어 있으므로 다음과 같이해야합니다.
var stations = [];
var stationData = this.data.stations;
for (var i = 0; i < stationData.length; i++) {
stations.push(
<div key={stationData[i].call} className="station">
Call: {stationData[i].call}, Freq: {stationData[i].frequency}
</div>
)
}
render() {
return (
<div className="stations">{stations}</div>
)
}
또는 map
ES6를 사용하는 경우 및 화살표 기능을 사용할 수 있습니다 .
const stations = this.data.stations.map(station =>
<div key={station.call} className="station">
Call: {station.call}, Freq: {station.frequency}
</div>
);
참고URL : https://stackoverflow.com/questions/32157286/rendering-react-components-from-array-of-objects
'programing' 카테고리의 다른 글
rsync가 .htaccess 파일을 동기화하지 않습니다. (0) | 2020.10.07 |
---|---|
Laravel Query Builder를 사용하여 하위 쿼리에서 선택하는 방법은 무엇입니까? (0) | 2020.10.07 |
데이터베이스 테이블의 임의 레코드 (T-SQL) (0) | 2020.10.07 |
WPF ListView : 항목에서 두 번 클릭 이벤트 첨부 (0) | 2020.10.07 |
H2가 메모리 내 데이터베이스에서 스키마를 자동 생성하도록 할 수 있습니까? (0) | 2020.10.07 |