Réaction - le Déclenchement d'un composant de méthode à partir d'un autre composant, appartenant tous deux dans le même render()

J'ai un composant personnalisé Foo, dont le " bar fonction de je veux de déclenchement de l'extérieur:

class Foo extends React.Component {
   bar() { ... }
}

Je me suis rendu Foo avec un button dont le but est de déclencher Foo.bar():

render() {

 return (
     <Foo ...>
     </Foo>
     <Button onClick={I want to trigger Foo.bar()} />
 );
}

Choses que j'ai essayé:

  1. Déplacement <Button > à l'intérieur de Foo, puis en ajoutant onClick de <Button/> dans Foo's constructeur, la liaison de onClick ne fonctionne pas, je vois qu'il est attaché, mais la <Button /> encore ne déclenche pas onClick. (ou, si cela peut fonctionner, comment le faire correctement)?

Des Solutions qui ne font pas ce que je veux:

  1. J'en vois un solution potentielle qui suggère d'écouter un clic dans l'ensemble de la MyComponent, puis faire un peu de DOM interrogation de trouver si le bouton a été cliqué. Cela ne fonctionne pas pour moi, cependant, parce que MyComponent ne pas propre ces boutons (ces boutons ne sont pas MyComponent.props.children) et je préfère de réfléchir à une solution qui ne me forcer à avoir à déplacer les boutons à l'intérieur.

  2. Une autre solution possible ne fonctionne pas: je ne peut pas avoir le render() retourner la valeur de <MyComponent /> dans un var myComp, puis à l'intérieur de <Button onClick={() => {myComp.blah()}} />, parce que <Button /> lui-même est instancié à l'intérieur de <MyComponent /> comme un enfant! (et, ils sont tous les deux dans le même render() appel de toute façon)

  3. Partie b) #2 (ci-dessus), à l'aide de Réagir-Composante statique de la méthode de classe, ne fonctionnera pas non plus: j'ai besoin de cette par exemple de base.

  4. À l'aide de l'état d'application (comme un magasin) n'est pas ce que je veux, que ce soit -- MyComponent est destiné à être un re-usaable widget et ne peut pas être lié à une application spécifique de l'état ou de l'écoute de toute magasins spécifiques ou magasin d'actions.

Des suggestions?

Grâce

InformationsquelleAutor dev | 2017-02-19