2017-12-13 3 views
0

すでにComponentTypeとしてタイプされているコンポーネントに別のコンポーネントを接続する方法はありますか?ComponentTypeに別のコンポーネントを接続するにはどうすればいいですか?

例えば:

type Props = { 
    name: string, 
} 

const Header: ComponentType<Props> = ({ props }) => (<h1>{name}</h1>) 
const SubHeader: ComponentType<Props> = ({ props }) => (<h2>{name}</h2>) 

Header.SubHeader = SubHeader // this is causes a flow error due to ComponentType 

例は少し不自然であるが、HOCs又はstyled-componentsを使用する場合ComponentTypeに強制マニュアルが時々必要です。

+0

[交差型を使って 'Header'のタイプを拡張することができますか(https://stackoverflow.com/questions/42582880/flow-create-a-flow-type-by-extending-another-type)? –

+0

ええ、交差点は仕事をするでしょう: 'const Header:ComponentType &{SubHeader ?: ComponentType }' –

+0

うん、これは通常はうまくいくと思うけど、 'styled-components'を使うと' styled() 'すべての交差タイプを拒否します。私は彼らにこれについて何をするべきか尋ねるでしょうが、これは答えられます:)。どちらにも答えたいのですか? –

答えて

0

交差点がジョブを実行します:const Header: ComponentType<Props> & { SubHeader: ComponentType<Props> }

Maybeまたはオプションのタイプをコンポーネントとしてレンダリングしようとすると、SubHeaderMaybeまたはオプションのタイプであってはならないことに注意してください。

関連する問題