Comment ajouter une classe CSS à un élément de sur - Réagir
Comment pouvez-vous ajouter une classe CSS à un élément existant RÉAGIR élément sur cliquez sur?
J'ai un JSFiddle créé: https://jsfiddle.net/5r25psub/
Dans le violon, le code ne fonctionne que si j'ai de la déclaration: this.setState({color:blue});
Je veux quelque chose comme this.setState({className: 'green'});
Ce que je fais mal?
Code:
<html>
<script>
var Hello = React.createClass({
getInitialState: function(){
return {
color: 'blue'
};
},
handleClick: function(){
if (this.state.color === 'blue'){
this.setState({className = " green"});
} else {
this.setState({color: 'blue'});
}
},
render: function() {
return <button className={this.state.className} onClick={this.handleClick}>My background is: {this.state.color}, Click me to change</button>;
}
});
React.render(<Hello name="World" />, document.getElementById('container'));
</script>
<body>
<script src="https://facebook.github.io/react/js/jsfiddle-integration.js"></script>
<style>
.green {
background-color: lightgreen;
}
.blue {
background-color: lightblue;
}
</style>
<div id="container">
<!-- This element's contents will be replaced with your component. -->
</div>
</body>
</html>
À l'intérieur de
handleClick
vous avez écrit className = " green"
mais il devrait être className: "green"
OriginalL'auteur chrisrhyno2003 | 2016-03-30
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le module
classnames
trouve ici:https://www.npmjs.com/package/classnames
De sorte que vous feriez quelque chose comme:
OriginalL'auteur sma
Vous devez ajouter tous les paramètres de l'état de
getInitialState
, pour l'instant, la seule chose que vous avez à faire estcolor
, doncthis.state.color
est la seule chose dans ilLorsque vous définissez votre état de className: quelque chose, c'est la seule chose là maintenant, même la couleur est parti...et c'est pourquoi la couleur initiale est normal fade gris
vous avez une erreur de syntaxe dans setState ainsi, ce n'est pas
Il devrait être:
Enfin,
React.render
est obsolète, vous devez utiliserReactDOM.render
maintenantViolon: https://jsfiddle.net/omarjmh/69z2wepo/36597/
pourquoi avez-vous besoin d'une liste de classes? Regardez le code dans le violon que j'ai posté, vous avez eu la mauvaise ressources externes, ouvrez la console et voir ce qu'il dit, c'est tout ce qu'il a pris pour moi de répondre à votre question
OriginalL'auteur JordanHendrix
https://jsfiddle.net/ajvf50s6/3/
Plus probablement, il est préférable de faire une vérification fondée sur le
className
, pas sur lecolor
état de la propriété:Aussi, comme @Omarjmh mentionné, vous avez une erreur dans votre code.
{className = " green"}
est mauvaise affectation.Je vous suggère de regarder vers github.com/JedWatson/classnames
Aussi, c'est pour un seul élément. serait-il nécessaire de préserver les états de plusieurs éléments?
OriginalL'auteur Alexandr Lazarev
Plutôt que d'utiliser deux variables d'état, vous pouvez faire comme ceci.
Depuis l'état initial de la couleur est le bleu, vous pouvez modifier la handleClick fonction :
Et, pour la classe, considérons une variable :
Maintenant, remplacez le nom de la classe comme ci-dessous et vous devez placer cet objet où vous appelez div classe.
J'espère que ça fonctionne bien.
OriginalL'auteur Vinay J Rao