ERROR:
main.js:1583 Uncaught Error: Objects are not valid as a React child (found: [object HTMLTableElement]). If you meant to render a collection of children, use an array instead or wrap the object using createFragment(object) from the React add-ons.
CODE:
var size = 40
var Board = createReactClass ({
getInitialState() {
var array = [];
var cellsArray = [];
for (var i = 0; i < size; i ++) {
array.push(cellsArray);
for (var j = 0; j > size; j++) {
array[i].push(<Cell start={this.props.start}/>);
}
}
return {
array: array
};
},
render() {
var i = 0;
var tableData = this.state.array.map(rowData => {
i++
return (
<tr key={i}>
{
rowData.map(cellData => {
return ({cellData});
})
}
</tr>
);
})
return (
<table>
<tbody>
{tableData}
</tbody>
</table>
);
}
})
var Cell = createReactClass ({
getInitialState() {
return {
selected : false,
}
},
handleClick() {
this.setState({
selected: !this.state.selected
})
},
render() {
return <td onClick = {this.handleClick} className={this.state.selected ? "cell selected" : "cell"}></td>;
}
})
QUESTION:
I would like to render the programmatically created table. How can I do that ?
UPDATE:
CSS:
.cell {
width: 1em;
height: 1em;
border: 1px solid #ddd;
}
.selected {
background-color: black;
}
table {
border: 1px solid black;
border-collapse: collapse;
margin: auto;
margin-bottom: 50px;
}


document.createElement('table')is a bad idea, just return<table>{tableData.map(rowData => <tr>...and so on