私はコンポーネント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?
でwrappedComponent'は、あなたが使用しているので、どんな意味がありませんレンダリング '宣言それは 'renderRows'にあります。 – Valentin