你寫的沒有什么問題,但是可以優(yōu)化一下
點擊了已經是curr的div,可以不用重新render
choose-opts里面的重復內容可以批量生成
沒有必要記錄所有的curr信息,只需要當前的
var Hello = React.createClass({
getInitialState() { //只需要記錄當前的
return {curr: 0}
},
shouldComponentUpdate(nextProps, nextState) { // 優(yōu)化點擊已經curr的不需要重新render
return !(nextState.curr === this.state.curr)
},
handleClick(i) { this.setState({curr: i})
},
render: function() { // 批量生成
return (
<div>
{[...Array(this.props.total)].map((x, i) =>
<div
className={i === this.state.curr ? 'curr' : ''}
onClick={this.handleClick.bind(null, i)} // 只需要index,不需要傳event
key={i}
>
{i === this.state.curr ? 'curr' : 'not curr'}
</div>
)}
</div>
)
}
})
ReactDOM.render(
<Hello total={5} />,
document.getElementById('container')
)