2017-01-17 1 views
24

ステートレス純粋なDumbコンポーネントをエクスポートするにはどうすればよいですか?しかしReact - 純粋なステートレスコンポーネントをエクスポートする方法

import React, { Component } from 'react'; 

export default class Header extends Component { 
    render(){ 
     return <pre>Header</pre> 
    } 
} 

を、私は純粋な関数を使用する場合、私はそれを動作させることはできません:私はクラスを使用する場合は

が、これは動作します。

import React, { Component } from 'react'; 
export default const Header =() => { 
    return <pre>Header</pre> 
} 

私には何かが欠けていますか?

答えて

40

ES6はexport default constを許可しません。

const Header =() => { 
    return <pre>Header</pre> 
}; 
export default Header; 

この制約は禁止されているexport default a, b, c;を足す避けるために存在します:1つの変数のみがデフォルト

+0

のようにインポートし、[OK]ああのようにインポートし、感謝!知っておいてよかった! –

-1

としてエクスポートすることができます。また、代わりにPureComponentを拡張するクラスを使用することができますあなたは、一定の第1は、それをエクスポートする宣言する必要がありますコンポーネントのここをクリックしてください:https://facebook.github.io/react/docs/react-api.html#react.purecomponent

+1

質問には答えません –

9

ちょっとしたメモです。あなたは技術的にはexport defaultに変数を最初に宣言することなくすることができます。

export default() => (
    <pre>Header</pre> 
) 
+6

このようにエクスポートされたコンポーネントはクロームのReact devtoolsに「Unknown」と表示されるという唯一の欠点があります。 – hillmark

+0

このように宣言された関数をどのようにインポートしますか? –

+1

@DanielThompsonあなたはそれを次のようにインポートできます: '。/ path/to/component 'からYourComponentをインポートする パスをコンポーネントの実際のパスに置き換えます。デフォルトのエクスポートのインポート名は任意のものにすることができます。この例では 'YourComponent'を選択しました。 – jstwrt

0

次の2つの方法

1)

// @flow 
 

 
type CompletedComponentProps = { 
 
    header: string 
 
}; 
 

 
const ComponentA = (props: ComponentAProps) => { 
 
    return <div>{props.header}</div>; 
 
}; 
 

 
export default ComponentA;

2)

// @flow 
 

 
type CompletedComponentProps = { 
 
    header: string 
 
}; 
 

 
export const ComponentA = (props: ComponentAProps) => { 
 
    return <div>{props.header}</div>; 
 
};

でそれを行うことができます

私たちはデフォルトを使用している場合、我々は、この

import ComponentA from '../shared/componentA' 

私たちはデフォルトを使用しない場合、我々は、この

import { ComponentA } from '../shared/componentA' 
関連する問題