2017-11-29 2 views
0

と入力することはできません。ReactにTypeScriptエラーを持つステートレス関数:TS2352を 'Promise <StatelessComponent <{}>>'

import * as React from 'react'; 
const Product: React.SFC<{}> =() => <div>Product</div>; 
export default Product; 

import { asyncComponent } from 'react-async-component'; 

const AsyncProduct = asyncComponent({ 
    name: 'AsyncProduct', 
    serverMode: 'resolve', 
    resolve:() => { 
    return import(/* webpackChunkName: "Product" */ './Product') as Promise<React.SFC<{}>>; 
    }, 
}); 

export default AsyncProduct; 

./src/AsyncProduct.tsx(7,12):エラーTS2352:タイプ '約束' 'が約束を>' 型に変換できません。 " 'typeof "/Users/banyan/tmp/typescript-react-async-component-example/src/Product "' は 'StatelessComponent < {}>'と比較できません。 タイプ 'typeof'/Users/banyan/tmp/typescript-react-async-component-example/src/Product "' は署名に一致しません'(小児:ReactNode; )、コンテキスト:任意):ReactElement |ヌル'。

私はPromise<React.SFC<{}>Promise<any>であることを変更すると、それはコンパイルすることができますが、どのように私はステートレスな機能を指定することができますか?

これはyarn startで再現する最小レポです:https://github.com/banyan/typescript-react-async-component-example


タイプの定義は、このようなものです:node_modules/react-async-component/index.d.tsasync/awaitを使用して

/** 
* The configuration for an asynchronous component. 
*/ 
export interface Configuration<P> { 
    resolve:() => Promise<React.ComponentType<P>>; 
... 
} 
+0

あなたのレンダリング機能が多分TAに必要あなたがそれらを使用していない場合でも、反応の議論? onst製品:React.SFC <{}> =(小道具:{子?:ReactNode;}、文脈?:任意)=>

Product
; しかし、私はちょうど推測しています。私はまだリアクトですごく素晴らしいわけじゃない。 :) –

答えて

1

import機能を使用すると、モジュール(デフォルトのエクスポートまたは名前付き1)から使用したい正確に何を選択する必要があり、モジュール全体を返し

const AsyncProduct = asyncComponent({ 
    name: 'AsyncProduct', 
    serverMode: 'resolve', 
    resolve: async() => { 
    var module = await import('./Product'); 
    return module.default; 
    }, 
}); 

またはその後で:

const AsyncProduct2 = asyncComponent({ 
    name: 'AsyncProduct', 
    serverMode: 'resolve', 
    resolve:() => { 
    return import('./Product').then(m=> m.default); 
    }, 
}); 
+1

私は今理解した!どうもありがとう!! – banyan

関連する問題

 関連する問題