I have a table rendered with react (about 100 rows), but I would like the effect of the rows appearing one by one. Is there a way to do this with React? Below is my React code (the derivePairs funtion on the willMount procedure comes up with the data for the table).
var columns = [
{ key: 'pairNo', label: 'Zaporedna številka' },
{ key: 'homeTeam', label: 'Domača ekipa' },
{ key: 'awayTeam', label: 'Gostujoča ekipa' },
{ key: 'score', label: 'Rezultat' }
];
var Table = React.createClass({
getInitialState: function() {
return {data: this.props.data};
},
componentWillMount: function() {
derivePairs();
},
render: function() {
var headerComponents = this.generateHeaders(),
rowComponents = this.generateRows();
return (
<table>
<thead>{headerComponents}</thead>
<tbody>{rowComponents}</tbody>
</table>
);
},
generateHeaders: function() {
var cols = this.props.cols; // [{key, label}]
// generate our header (th) cell components
return cols.map(function(colData) {
return <th key={colData.key}>{colData.label}</th>;
});
},
generateRows: function() {
var cols = this.props.cols, // [{key, label}]
data = this.props.data;
var round=1;
var pairNo=1;
var oldRound=0;
var teamName=null;
return this.state.data.map(function(item, i) {
// handle the column data within each row
var htmlExcerpt = null;
var len = Object.keys(cols).length;
if (oldRound !== item.round) {
i=i+1;
htmlExcerpt = <tr key={'round'+item.round}><td colSpan={len}>Round: {item.round}</td></tr>;
oldRound = item.round;
}
var cells = cols.map(function(colData) {
console.log(colData);
// colData.key might be "firstName"
if (colData.key == "pairNo") {
return (<td> {pairNo} </td>);
} else {
if (colData.key == "homeTeam" || colData.key == "awayTeam") {
teamName = config.teams[item[colData.key]].name;
return (<td> {teamName} </td>);
} else {
return (<td> {item[colData.key]} </td>);
}
}
});
if (htmlExcerpt !== null) {
return [htmlExcerpt,<tr className=enter-data key={i}> {cells} </tr>];
} else {
return <tr className=enter-data key={i}> {cells} </tr>;
}
pairNo=pairNo+1;
});
}
});
ReactDOM.render(<Table cols={columns} data={config.pairs}/>, document.getElementById('roundPairs'));
Thanks for the help.