通过利用state management
,您可以实现这一目标。请找到以下示例以供参考。避免DOM Manipulations
并让 react 来处理。
const ArticlePreview = (props) => {
return(
<div className={props.class} onClick={props.onClick}>{props.article}</div>
)
}
class App extends React.Component {
constructor(props) {
super(props)
this.state={
selected: false,
article: ''
}
}
onSelectArticle = (article) => {
this.setState({
selected:true,
article:article
})
}
render() {
let articles = ['one', 'two', 'three']
return <div>
{
articles.map((article, index)=> <ArticlePreview key={index} class={(this.state.selected && (this.state.article === article)) ? 'bkcolor': 'default'} onClick={() => this.onSelectArticle(article)} article={article}/>)
}
</div>
}
}
ReactDOM.render( <App/> , document.getElementById("app"))
.default {
background: transparent
}
.bkcolor {
background: red
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>
在您的情况下,将索引传递给处理程序并检查所选并匹配索引状态。
...
<ArticlePreview className={(this.state.selected && (this.state.index === index)) ? 'bkcolor': 'default'} onClick={()=>this.props.clicked(index)} img={images[index]} title={titles[index]} description={descriptions[index]} key={i}> </ArticlePreview>) }) }
...