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);
もう少し詳細を教えてください。たぶん完全なコンポーネントを表示し、必要なものを正確に記述します。 –