に失敗し、私は他のファイルにconstの成分を抽出することができますどのように反応する:ES6は、私は細かい作業よりも、このES6 + JSXコードを持って
// list.js
import React from 'react';
import {
List,
Datagrid,
Filter,
TextInput,
NumberField,
TextField,
} from 'admin-on-rest/lib/mui';
const Filters = props =>
<Filter {...props}>
<TextInput source="q" alwaysOn />
</Filter>
;
export default props => (
<List {...props} filters={<Filters />} >
<Datagrid>
<NumberField source="id" />
<TextField source="description" />
</Datagrid>
</List>
);
私は別のソースファイル内のフィルタの定義を抽出します。
私はこの方法を試してみました:
// filters.js
import React from 'react';
import {
Filter,
TextInput,
TextField,
} from 'admin-on-rest';
export default props =>
<Filter {...props}>
<TextInput source="q" alwaysOn />
</Filter>
;
と
// list.js
import React from 'react';
import {
List,
Datagrid,
Filter,
TextInput,
NumberField,
TextField,
} from 'admin-on-rest/lib/mui';
import Filters from 'filters';
export default props => (
<List {...props} filters={<Filters />} >
<Datagrid>
<NumberField source="id" />
<TextField source="description" />
</Datagrid>
</List>
);
私はコードが同等だと思ったが、2番目のケースでは、私は
Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in.
そして最後のカップルを取得このエラー
起訴主要は
filters={<Filters />}
ですが、何が正しい構文でしょうか?
インポートするカスタムファイルへの相対パス(または絶対パス)を指定する必要があります。名前が 'filter'のnpmパッケージをインポートしている可能性があります。あなたが望むのは、 './filter 'から' import Filters from'です。 –
'filter.js'と 'filter ** s **'? – Bergi
申し訳ありませんが、この記事のレポートではスペルミスです。私のコードでは、ファイル名はfilters.jsです。私は記事を修正したが、質問はまだ開いている。 – stefsava