2017-10-06 11 views
0

私は反応コンポーネントでnpmパッケージを作成しました。 バベルプリセットes2015と反応Reactコンポーネントを使用してnpm packを作成する| component.typeは定義されていません

私のコンポーネントでは、すべての子供を連れて、特定のアクションを実行するためにそのタイプをチェックします。しかし、すべての子はタイプ==未定義です。 コンポーネントがプロジェクト内でdirectlly(npm packからインストールされていない)の場合、すべての動作が正常に動作します。

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); 
     } 
    }); 

答えて

0

あなたは子供を検証するために、カスタムpropType機能を使用することができます。

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}.`); 
     } 
    }); 
    } 
} 

は、それが参考になっている部分的

+0

に役立ちます願っています。 私のコンポーネントにはいくつかのサブコンポーネントがあり、最初の子はType1、2番目はType4であることがわかります。私が持っている問題は、webpackが自分のコンポーネントをnpmパックに変換し、すべてのクラスComponent1を変更してReact.Componentを関数に拡張することです。 – massther

+0

webpack設定ファイルを追加できますか?ありがとう! – NickHTTPS

関連する問題