Comment passer d'un état className variable à une autre composante de réagir
Je ne suis pas sûr si c'est le meilleur moyen de faire des choses, mais je veux passer un nom de classe de la variable à une autre composante de réagir.
C'est un bouton qui lancer une animation onClick simplement l'ajout d'un nom de classe à quelques éléments. Aussi j'ai créé le var = superposition de cette.état.cliked ? "ouvrir": "le lancement d'une superposition, si j'ai la superposition html sur le même composant, il fonctionne très bien mais j'ai à faire, peu de composants que je peux.
var React = require('react');
var OverlayView = require('./OverlayView.jsx');
var StatusBarButtonView = React.createClass({
getInitialState: function() {
return {cliked: false};
},
handleClick: function(event) {
this.setState({cliked: !this.state.cliked});
},
render: function() {
var fondo = this.state.cliked ? 'active' : '';
var overlay = this.state.cliked ? 'open' : '';
return (
<div>
<div className={"statusbar-button-container " + (fondo)} onClick={this.handleClick}>
<img src="images/navbar-element-icon-cross.png" className={"rotate " + (fondo)}/>
</div>
</div>
<OverlayView className={overlay} />
);
}
});
module.exports = StatusBarButtonView;
Comme vous le voyez le, est le composant de la superposition que je veux passer à ce composant, mais im pas sûr si il peut juste être seul et d'être lancée dès cette une poignée de clic. je suis un peu perdu avec de réagir, non pas tant en ligne info et im nouveau à cela.
C'est la Superposition de composant:
var React = require('react');
var OverlayView = React.createClass({
return (
<div className={"overlay overlay-slidedown " + this.props.class}>
<nav>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Work</a></li>
<li><a href="#">Clients</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
</div>
);
}
});
module.exports = OverlayView;
Je ne suis pas sûr de la façon de le faire, je cherche des exemples sur le web mais rien de très clair pour moi 🙁
Vous devez vous connecter pour publier un commentaire.
En passant les noms de classe comme des chaînes de caractères entre les composants et le même en ajoutant les noms de classe dans le même composant est sujette à des erreurs et n'est pas idéal. Je suggérerais à l'aide de la classSet() helper: https://facebook.github.io/react/docs/class-name-manipulation.html
Dans votre cas, au lieu de passer d'une classe prop à la OverlayView composant, vous devriez idéalement passer un accessoire qui décrit l'état du composant. Dans le OverlayView composant, et le calcul correct des classes pour être appliqué à l'aide de la classSet helper.
Par exemple, au lieu d'utiliser ce:
<OverlayView className={overlay} />
vous pouvez tout simplement passer à la variable d'état:
<OverlayView isOpen={this.state.cliked} />
Dans votre OverlayView composant, vous pouvez alors créer des classes d'objets à l'aide de la classe helper:
Et changer la ligne dans votre render() de la fonction à utiliser les classes d'objet:
Utiliser ceci:
Remarque: bien Faire la différence entre " et " (connu sous le nom backticks). Ce signe sur le clavier est juste à gauche à 1 et au-dessus de l'onglet.
J'ai essayé cette partie de ton code...
Et il semblait fonctionner parfaitement pour moi. Il a résolu mon problème: un accessoire à défaut d'interpoler quand je veux l'afficher à côté du texte statique.
Je trouve cela mieux que la accepté de répondre, parce que cela a résolu le problème par le paramétrage de l'extra concat souhaitez valeurs, quand ce n'est pas souvent souhaité et contre le général de l'encapsulation de la philosophie.