2017-08-10 2 views
0

J'essaie de comprendre pourquoi onChange ne fonctionnera pas sur un composant enfants, j'ai un composant nommé AlertMethod et im appelant à partir d'un conteneur.React - onChange composant enfants

<AlertMethod 
    onChange={this.methodSelected} 
    label="Sms" 
    value="sms" 
/> 

et methodSelected c'est juste un console.log() pour tester si obtenir appelé

methodSelected = (event, data) => { 
    console.log(data);   
}; 

est ici un img pour expliquer mieux.

enter image description here

donc finalement cette fonction, il se wont appelé. c'est mon problème.

EDIT

Sur mon conteneur AlertSystem.js je veux mettre à jour un état si une case à cocher elle est cochée ou non, donc mon composant case il est Checkbox.js c'est une fonction sans état, il recive 2 accessoires label et value rien spécial. donc dans mon conteneur lorsque mon composant Checkbox a changé, mettre à jour mon état, c'est pourquoi j'ai un onChange={this.methodSelected} sur le composant enfants, car dans la fonction methodSelected, je mets à jour mon état avec this.setState et autres.

Répondre

0

Vous n'êtes pas appeler props.onClick dans AlertMethod

0

Votre composant enfant AlertMethod est transmis l'hélice onSubmit mais pas l'utiliser.

devrait ressembler plus à ceci:

export const AlertMethod = ({ label, value, onClick }) => { 
    return (
     <div> 
      <Checkbox value={value} fluid label={label} onClick={onClick} /> 
     </div> 
    ) 
} 
+0

Mais je ne veux pas passer un accessoire à mes enfants, je veux savoir dans mon récipient quand change mes enfants, je ne sais pas si je m'explique. – Gil

+0

Partagez plus de code avec nous, je pense que tout le monde suppose que vous essayez d'appeler cette méthode lorsque votre enfant est cliqué. Qu'essayez-vous d'accomplir exactement? –

+0

édité, maintenant vous pouvez voir ce que je dois faire, je ne peux pas montrer plus de code, car c'est aussi simple que ce lol. – Gil

0

Vous passez une fonction sur un accessoire appelé onClick mais dans la définition du composant que vous ne l'utilisez pas.