2017-07-18 17 views
0

私はコンポーネントsomeComponentを持っていて、関数withMoreStuffはクラスを取り込み、クラスを返します。すべてのインポート/エクスポートをチェックしましたが、デフォルトまたは名前付きエクスポートは問題ありません。高次コンポーネント:React.createElement:型が無効

エラー:このファイルから返さReact.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: undefined.

// @flow 
import React, { Component } from 'react'; 
import ReactDOM from 'react-dom'; 
import { withMoreStuff } from 'hocs'; 
import { someComponent } from 'components'; 

type PropsType = { 
    data: [{ id: number }], 
} 

const wrappedComponent = withMoreStuff(someComponent); 

class ItemList extends Component { 
    props: PropsType; 

    renderRows(data: any) { 
    return data.map(item => 
     <wrappedComponent key={item.id} data={item} /> 
    ); 
    } 

    render() { 

    return (
     <div> 
     {this.renderRows(this.props.data)} 
     </div> 
    ); 
    } 
}; 

export default ItemList; 

エラーがwrappedComponentが有効なクラスではありませんと言っています。私はrenderメソッドにラインconst wrappedComponent = withMoreStuff(someComponent);を移動した場合

それが適切にレンダリングします:

render() { 
    const wrappedComponent = withMoreStuff(someComponent); 
    return (
     <div> 
     {this.renderRows(this.props.data)} 
     </div> 
    ); 
} 

WHY?

+0

でwrappedComponent'は、あなたが使用しているので、どんな意味がありませんレンダリング '宣言それは 'renderRows'にあります。 – Valentin

答えて

0

私は、これはそれを解決するかどうか確認し、あなたがどんな小道具を受けていないと、あなたのrenderRowsメソッドは何も返していないと信じて:

renderRows(data: any) { 
    if(!data) return </div>; 
    return data.map(item => 
     <wrappedComponent key={item.id} data={item} /> 
    ); 
} 
関連する問題