reagieren, ändern Sie die Klasse, die Liste auf klicken Sie auf
Ich habe einen reagieren element wie diesem:
import React, { PropTypes, Component } from 'react'
class AlbumList extends Component {
constructor(props) {
super(props);
this.state = {'active': false, 'class': 'album'};
}
handleClick() {
if(this.state.active){
this.setState({'active': false,'class': 'album'})
}else{
this.setState({'active': true,'class': 'active'})
}
}
render() {
var album_list
const {user} = this.props
if(user.data){
list = user.data.filter(album => album.photos).map((album => {
return <div className={"col-sm-3"} key={album.id}>
<div className={this.state.class} key={album.id} onClick={this.handleClick.bind(this)}>
<div className={"panel-heading"}>{ album.name }</div>
<div className={"panel-body"}>
<img className={"img-responsive"} src={album.photo.source} />
</div>
</div>
</div>
}))
}
return (
<div className={"container"}>
<div className="row">
{list}
</div>
</div>
)
}
}
export default AlbumList
Hier map
gibt die Liste der filter
Daten, wie ich wollte. Hier das, was ich Tue, ändert die Klasse aller element in der Liste wenn ich auf eine.
Ich bin immer der name der Klasse aus this.state.class
Wie kann ich die Klasse der einzige element, das ich geklickt habe..
Vielen Dank im Voraus ...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hielt ich es einmal.So haben Sie so viele divs und Sie wollen wissen, welche angeklickt wird.Mein Weg, um dieses problem zu lösen, ist die Angabe einer Parameter an die Funktion handleClick und Sie können das dom des div-während Sie klicken Sie auf die div.Wie diese:
Dann haben Sie die Parameter für diese Funktion.Zwar können Sie mit der e.Ziel um den dom Ihres div-Element, welches geklickt wird.
Gibt es einige Fehler in Ihrem code über die state.class.
Können Sie versuchen, diese und erzählen Sie mir nichts falsch.
state.class.name
dass ich will, die Klasse zu wechseln... und ja der div eindeutigen Namen mitkey
parameteronClick
Methode auf bestimmten Klasse. Ich bin nach deiner Idee dann aber wenn ich auf jede Klasse, es gibttarget
. Ich nehme an, es sollte nur return-Ziel der angeklickte divonClick
auch , dass div sollten nur angeklickt werden, richtig, aber hier in jedem panel div klickte ich zurückgegeben, in Ziel..onClick
auch zurückgegeben werden soll und ich das ändern sollte, dass div von activeactive
panel-heading
panel-body
... ich habeonClick
Methode aufactive
div class aber wenn wenn ich aufpanel-heading
es ist mir seiner Klasse stattactive
Klasse. Was auch immer ich klicken sollte es wiederactive
Klasse