2017-10-06 1 views
0

J'ai créé un paquet npm avec mon composant de réaction. Babel préréglages es2015 et réagissentcréer un pack npm avec le composant React | component.type is undefined

Dans mon composant je prends tous les enfants et vérifie leur type (pour effectuer des actions spécifiques). Mais tous les enfants ont type == indéfini. Lorsque le composant est directement dans mon projet (non installé à partir du pack npm), tout fonctionne correctement.

React.Children.forEach(this.props.children, function (child) { 
     if (child.type === SomeChildComponent) { // <-- issue is here, from npm pack child.type is undefined 
      defs = React.Children.map(child.props.children, c => c.props); 
     } 
    }); 

Répondre

0

Vous pouvez utiliser une fonction PropType personnalisé pour valider les enfants:

static propTypes = { 

    children: (props, propName, componentName) => { 
    const prop = props[propName]; 
    return React.Children.forEach(prop, child => { 
     if (child.type !== SomeChildComponent) { 
     error = new Error(`${componentName} children should be of type ${SomeChildComponent}.`); 
     } 
    }); 
    } 
} 

it helps

+0

partiellement il est utile. Mon composant peut avoir quelques sous-composants différents et je dois savoir que le premier enfant est Type1, et le second est Type4. Le problème que j'ai est que webpack transforme mon composant dans le pack npm, change toute la classe Component1 étend React.Component dans les fonctions. – massther

+0

Pouvez-vous ajouter votre fichier de configuration webpack s'il vous plaît? Merci! – NickHTTPS