export default React.createClass({
displayName: 'Test',
getInitialState() {
return {
activeItem: 0,
};
},
onItemClick(item) {
this.setState({
activeItem: item
});
},
isActive(item) {
return item === this.state.activeItem;
},
render() {
var circle = {
'one': {
items: []
}
};
['one'].forEach((k, i) => {
for (var j = 1; j <= 3; j++) {
var itemNo = (i * 10 + j);
var itemClasses = c('item', 'item-' + itemNo, {
'selected': this.isActive(itemNo)
});
var item = React.DOM.div({
key: "item" + itemNo,
className: itemClasses,
onClick: () => this.onItemClick(itemNo)
}, itemNo);
circle[k].items.push(item);
}
});
return (
<div>{circle.one.items}</div>
);
}
});
The circle.one.items
array is being populated by dynamically generated divs and should contain:
<div class="item item-1">1</div>
<div class="item item-2">2</div>
<div class="item item-3">3</div>
No matter what div I click on, only the 3rd one gets selected because itemNo
last value is 3.
Look at: onClick: () => this.onItemClick(itemNo)
. This is wrong. How can I pass the ID of the div I'm clicking to onItemClick()
?