Afficher/Masquer des composants dans ReactJS

Nous avons connu quelques problèmes dans l'utilisation de réagir maintenant, mais il un peu se résume pour une partie de la façon dont nous avons été à l'aide de réagir.

Comment devrions-nous avons été montrer/cacher les composants enfants?

C'est la façon dont nous avons codé comme ça (ce ne sont que des bribes de nos composants)...

_click: function() {
  if ($('#add-here').is(':empty'))
    React.render(<Child />, $('#add-here')[0]);
  else
    React.unmountComponentAtNode($('#add-here')[0]);
},
render: function() {
  return(
    <div>
      <div onClick={this._click}>Parent - click me to add child</div>
      <div id="add-here"></div>
    </div>
  )
}

et dernièrement, j'ai lu des exemples comme il se doit l'ai été quelque part le long de ces lignes:

getInitialState: function () {
  return { showChild: false };
},
_click: function() {
  this.setState({showChild: !this.state.showChild});
},
render: function() {
  return(
    <div>
      <div onClick={this._click}>Parent - click me to add child</div>
      {this.state.showChild ? <Child /> : null}
    </div>
  )
}

Si j'ai été à l'aide de Réagir.render()? Il semble cesser de diverses choses comme des shouldComponentUpdate à la cascade de l'enfant et des choses comme e.stopPropagation...

  • Pouvez-vous expliquer plus en détail ce qu'est le problème avec votre 2ème solution est? C'est effectivement la meilleure façon de le faire. Avoir un attribut d'état showChild que vous bascule lorsque votre div est cliqué. L'appel de setState puis rerenders votre composant.
  • Oh. En fait je n'ai pas eu l'expérience encore avec la 2ème solution. Je ne l'ai essayé dans une petite app et semble fonctionner. Nous avons été à l'aide de la première depuis qu'il a été ce qui a été appris à nous avant. Mais maintenant, nous avons été confronté à des problèmes comme la stopPropagation ne fonctionne pas ou nous avons besoin de mettre à jour manuellement l'Enfant lors de l' shouldComponentUpdate déclencheurs sur les parents. Mais je n'ai pas vraiment vu de tous les documents au sujet de cette "manière préférée", seulement des exemples de différents tutoriels. Donc, si nous avons été à l'aide de la 2ème solution?
  • Oui, le 2ème est le meilleur choix. La Réagir docs et des exemples à ne pas utiliser JQuery. Les docs ont beaucoup de beaucoup d'info. facebook.github.io/réagir/docs/...
  • Eh bien, je pourrais l'ai toujours utilisé this.refs pour cela, j'ai rapidement écrit-il dans jQuery.
  • Il suffit de ne pas utiliser jQuery ou à tous le moins possible.. Tout le temps de manipuler le DOM, vous courez le risque de Réagir en le feuilletant sur vous. Généralement les coups des erreurs similaires à: unable to find component at root ''
InformationsquelleAutor index | 2015-04-28