如果您只想保持 1 个项目处于活动状态,则可以在您的状态下保留对所选项目的引用。然后您可以编写一个 onClick 回调来更改所选项目。
var MyList = React.createClass({
getInitialState: function(){
return {
data: ['foo', 'bar', 'baz'],
selected: null
}
},
selectItem: function(el){
this.setState({selected: el});
},
renderItem: function(el){
var className = this.state.selected === el ? 'active' : 'inactive';
var onClick = this.selectItem.bind(this, el);
return <li key={el} className={className} onClick={onClick}>{el}</li>;
},
render: function() {
return (
<ul>
{ this.state.data.map(this.renderItem) }
</ul>
);
}
});
ReactDOM.render(
<MyList />,
document.getElementById('container')
);
如果您希望能够在每个列表项的活动和非活动之间切换,您可以使用相同的方法,但保留一个对象作为您的selected
状态:
getInitialState: function(){
return {
data: ['foo', 'bar', 'baz'],
selected: {}
}
},
selectItem: function(el){
var selected = this.state.selected;
selected[el] = !selected[el];
this.setState({selected: selected});
},
并相应地修改您的renderItem
功能:
var className = this.state.selected[el] ? 'active' : 'inactive';
var onClick = this.selectItem.bind(this, el);