2017-06-24 8 views
0

私はHOCにクラスまたは機能コンポーネントのいずれかを渡すことができる問題に遭遇しています。 HOCでは、渡されているコンポーネント(PAGE)の静的プロパティにアクセスする必要があります。ここでの問題は、FLOWがHOCに渡されているPAGEで静的プロパティを見つけることができないというエラーが表示されることです。フロータイプがHOCの静的な小道具を保存していません

Error:(50, 21) Flow: property getInitialProps. Property not found in statics of React$Component

そのエラーが次のコードでは、この行から来ている:

const pageProps = 
      (await Page.getInitialProps) && (await Page.getInitialProps(ctx)) 

任意の助けをいただければ幸いです - 私のフルアドホック:私はを取り除くために見つけ

type DefaultProps = { 
     getInitialProps: (ctx:any) => any 
    } 

type FunctionComponent<P> = (props: P) => ?React.Element<*>; 
type ClassComponent<D, P, S> = Class<React.Component<D, P, S>>; 

type Component<D, P> = FunctionComponent<P> | ClassComponent<D, P, any>; 

export default <D: DefaultProps, P: {}, S: {}> (Page: Component<D, P>, title: string = '') => { 
    class standardLayout extends React.Component { 
    static async getInitialProps (ctx) { 



// Flow can't read getInitialProps 
    const pageProps = Page.getInitialProps ? (await Page.getInitialProps(ctx)) : await Page.getInitialProps 

     return { 
     ...pageProps, 
     currentUrl: ctx.pathname 
     } 
    } 

    render() { 
     return (
     <div> 

      <Page {...this.props} /> 

     </div> 
    ) 
    } 
    } 

    return connect()(standardLayout) 
} 
+0

「getInitialProps」はプロパティではなくメソッドである可能性があります。あなたの '(Page.getInitialPropsを待っています)'は本当に奇妙です、あなたはここに何を期待しましたか? 'getInitialProps'が存在するかどうかをチェックしたい場合は、' const pageProps = Page.getInitialProps &&(Page.getInitialProps(ctx)を待つ) 'が十分でなければなりません – soywod

+0

@soywod助けてくれてありがとう!私はあなたのアドバイスを取ってそれを変更しました - 今これらの2つのエラーがポップアップ - > エラー:(50,55)フロー:メソッド 'getInitialProps'の呼び出し。不明な型のプロパティ 'getInitialProps'で関数を呼び出すことはできません - 第2エラー - >エラー:(50、90)フロー:不明な型のプロパティ' getInitialProps'。この型は共用体と互換性がありません:クラス 'Promise'の型アプリケーション|型パラメータ 'T'を待つ。私は関数にgetInitialPropsを設定することで十分だと思った。 –

+0

'getInitialProps:Function'' Function'はどこから来たのですか? – soywod

答えて

2

を最善の方法このエラーは、Page.getInitialPropsが機能であるかどうかをチェックすることです。単純なtypeof Page.getInitialProps === 'function'、または私のために働いたtry ... catch、流れは満足していました。しかし、私はまだこれがなぜ理解できないのですか:const pageProps = Page.getInitialProps ? (await Page.getInitialProps(ctx)) : await Page.getInitialPropsawait Page.getInitialPropsを行うことはできません。nullまたは{}

+0

それは私があまりにも思ったことですが、私はちょうどFunctionalComponentを渡した場合getInitialPropsはエラーをスローしません - しかし、現在、HOCは反応成分をパラメータとして取ることができません。 –

+0

コードを更新できますか?私は地元で試してみよう – soywod

+0

- 更新しました - 助けてくれてありがとう! –

関連する問題