2017-08-19 1 views
0

J'essaie de voir ce que props sont passés à mon composant. Y a-t-il un moyen de l'enregistrer dans JSX? J'utilise 2 composants fonctionnels comme dans le bloc de code suivant. De l'invocation je passe props en tant que props:{programs:'Hello',locale:'en'}. Il semble que les accessoires entrent dans le ProgramsSummaryParent très bien mais je reçois ce message sur le navigateur quand il essaie de rendre le ProgramsSummaryPlaceholder:Enregistrement des valeurs de prop dans les composants fonctionnels possible?

Type prop échoué: L'accessoire content est marqué comme nécessaire TableCell, mais sa valeur est undefined . Pourquoi ne puis-je pas passer le prop?

const ProgramsSummaryParent = ({programs, locale,}) => (
<BaseSummary locale={locale}> 
    <ProgramsSummaryPlaceholder prg={programs}/> 
</BaseSummary> 
); 

const ProgramsSummaryPlaceholder = ({ prg, intl, }) => (
<div className="programs-summary">  
    <Table isStriped={true} isPadded={true}> 
    <Table.Rows > 
     <Table.Row > 
     <Table.Cell content={prg.programs} /> 
     </Table.Row> 
    </Table.Rows> 
    </Table> 
</div> 
); 
+0

Si votre composant enfant renvoie un bloc, vous pouvez ajouter des instructions arbitraires incluant un 'console.log' –

+0

@HunterMcMillen Comment renvoyer un bloc? J'ai essayé de le mettre dans {} mais cela n'a pas fonctionné. – linuxNoob

+0

J'ai ajouté un exemple ci-dessous. –

Répondre

1

Vous pouvez modifier votre composant enfant à retourner un bloc, vous pouvez ajouter des instructions arbitraires pour le débogage:

const ProgramsSummaryPlaceholder = ({ prg, intl, }) => { 
    console.log({ prg, intl }); 
    return (
    <div className="programs-summary">  
     <Table isStriped={true} isPadded={true}> 
     <Table.Rows > 
      <Table.Row > 
      <Table.Cell content={prg.programs} /> 
      </Table.Row> 
     </Table.Rows> 
    </Table> 
    </div> 
); 
} 

Lorsque vous avez terminé le débogage, il suffit de changer de nouveau en retour juste le JSX.

+0

Le journal affiche 'prg' n'est pas défini. Pourquoi est-ce vrai? – linuxNoob

+0

pourrait être parce que les programmes sont indéfinis –

+0

@ShubhamKhatri Donc je passe 'programs' comme Bonjour dans l'exemple ci-dessus. Pourquoi serait-ce indéfini? – linuxNoob

0

Utilisez l'extension de navigateur React Developer Tools. Après l'installation de l'extension, vous pouvez ouvrir l'outil de développement et sélectionner l'onglet Réagir. Là, vous verrez tous vos composants et vous pouvez sélectionner le composant que vous voulez et voir state et props qu'il reçoit dans le volet de droite.

+0

Cela ne montre pas le prop 'prg' que je passe à' ProgramsSummaryPlaceholder'. Cela montre juste 'intl'. – linuxNoob