Quel est le Réagissent équivalent d'un Angulaire de la directive qui ne fonctionne que sur les attributs?

Par exemple, vous pourriez avoir une directive angulaire de la sorte:

angular.module('app')
.directive('classy', function() {
  return {
    restrict: 'A',
    link: function($scope, $el) {
       $el.addClass('stay-classy');
    }
  }
}

Et de mettre en œuvre comme suit:

<div classy></div>

Il ne semble pas être un équivalent de Réagir que j'ai vu après avoir lu la plupart de la documentation et de recherche sur google. Je m'attendais à quelque chose comme:

...
render: function() {
  return (
     <MyComponent classy></MyComponent>
  );
}

Est-il quelque chose comme ça possible que j'ai été absent? Est-il différent mais fonctionnellement similaire équivalent? Ou peut-être cette question montre juste qu'il me manque une partie de la "Réagir" et je ne devrait même pas envie de le faire. Merci!

  • Vous pourriez peut-être prendre un peu de recul et dites-nous quel est le problème que vous essayez de résoudre. Pourquoi voulez-vous utiliser s <div> avec un attribut au lieu d'un composant?
  • Angulaire a beaucoup de trucs que c'est uniquement dû à d'autres défauts angulaires. Attribut de classe et des directives sont nécessaires à presque tout dans angulaire, de requis de la mutabilité de la confiance sur ce que le html fournit, plutôt que de js. Ce n'est pas quelque chose que vous avez besoin de réagir.
  • Je n'ai pas de cas d'utilisation spécifiques à l'esprit, donc je suppose que cela plus d'une question d'ordre général. Je pense que l'un des avantages d'un "attribut" composant/directive est la possibilité de combiner plusieurs composant les fonctionnalités sans définir explicitement un nouveau composant. Comme un exemple, peut-être que vous avez une liste déroulante composant et le composant tooltip. Maintenant, je veux une liste déroulante qui affiche une info-bulle sur le vol stationnaire. Dans Angulaire, vous pouvez combiner ces 2 fonctionnalités sur un seul élément, c'est à dire <dropdown tooltip="help text"></dropdown>
  • Avec <MyComponent classy></MyComponent>, classy est une propriété qui n'est pas un attribut. Réagir listes blanches attributs HTML actuellement, et ce qui n'est pas dans la liste et non préfixés avec data- est passé comme une propriété à la place. À l'intérieur du composant, il peut être accédé via this.props.classy. JSX transforme classy en classy=true pour correspondre à l'effet de HTML attributs booléens.
  • C'est compréhensible, mais mon compteur serait: Est la définition d'une nouvelle directive vraiment différent, voire meilleure, que celle de la définition d'un nouveau composant?
  • Oui, nous parlons de la Décoration. Ce que nous sommes tous attendent, c'est que au lieu d'avoir <Items /> et tirez dans <ItemDecoratorA /> (comme nous l'avons ajouter des "responsabilités", nous avons ...A...B...C), ce qui pourrait être excessive pour les quelques maigres responsabilités, nous avons plutôt quelque chose le long des lignes d'un focusOn qui ne peut avoir qu'une méthode unique/gestionnaire. Au lieu de <Items /> avoir à tirer dans chaque bon décorateur -- ou maintenir la relation parent-décorateur -- nous venons de changer <ItemDecoratorABC />. à <Item a b c />. C'est une chose Angulaire cloué que comment HTML natif les noms de classe de travail-juste Décorateurs
  • Bien dit. Qui capture l'essence de ce que j'essayais de dire au-dessus de la Jordanie. "Est la définition d'une nouvelle directive vraiment différent, voire meilleure, que celle de la définition d'un nouveau composant?" - Non, bien sûr que non, mais être capable de composer de plusieurs composants des fonctionnalités en passant par la décoration (pas de créer de nouvelles "combo" de composants ou de quelque chose) est plus élégant, et quelque chose que je souhaite Réagir eu. Merci à tous pour les commentaires.
  • vous pariez. Je pense que c'est un assez grand vide dans le cadre d'un modèle ou plugin va venir. Jusqu'alors, je suis en utilisant la Méthode de Modèle de Modèle pour atténuer l'entropie dans mes applications. Quelque chose comme: method () { /* do stuff */; this._method.call(this, ...); } avec componentWillMount () { SomeDecorator.apply(this); }. Je sais que c'est un peu cryptique, mais découvrez Modèle de Méthode et vous pourriez trouver quelque chose de mieux que la façon dont je suis la mettre en œuvre.

InformationsquelleAutor ccnokes | 2015-05-23