2017-04-16 10 views
0

私はTypescriptでReactアプリケーションを構築しています。私はルータに組み込もうとしているコンポーネントごとに次のエラーが出ます。React.ComponentはReactTypeではありません

ERROR in [at-loader] ./src/scripts/components/AppRouter.tsx:14:25 
    TS2322: Type 'typeof "E:/Programming Projects/free-food-app/src/scripts/components/OverviewPage"' is not assignable to type 'ReactType'. 
    Type 'typeof "E:/Programming Projects/free-food-app/src/scripts/components/OverviewPage"' is not assignable to type 'StatelessComponent<any>'. 
    Type 'typeof "E:/Programming Projects/free-food-app/src/scripts/components/OverviewPage"' provides no match for the signature '(props: any, context?: any): ReactElement<any>' 

これはまったくわかりません。それは、React.Componentを拡張するクラスがルータに含まれているべきであると思われるようです。なぜこれらのエラーが表示されますか?

AppRouter.tsx:

import * as React from 'react'; 
import { Router, Route, hashHistory } from 'react-router'; 
import * as OverviewPage from './OverviewPage'; 
import * as AssignmentViewPage from './AssignmentViewPage'; 
import * as SubmissionEditPage from './SubmissionEditPage'; 
import * as SubmissionSubmitPage from './SubmissionSubmitPage'; 
import * as SubmissionViewPage from './SubmissionViewPage'; 

export default class AppRouter extends React.Component<any, any> { 

    public render() { 
    return (
     <Router history={hashHistory}> 
     <Route path="/" component={OverviewPage}/> 
     <Route path="/assingment" component={AssignmentViewPage}/> 
     <Route path="/submission/edit" component={SubmissionEditPage}/> 
     <Route path="/submission/submit" component={SubmissionSubmitPage}/> 
     <Route path="/submission/" component={SubmissionViewPage}/> 
     </Router> 
    ); 
    } 
} 

編集:OverviewPage.tsx

import * as React from 'react'; 

class OverviewPage extends React.Component<any, any> { 
    public render() { 
    return (
     <div> 
     <p>Overview</p> 
     </div> 
    ); 
    } 
} 

export { OverviewPage } 
+0

ルーターに渡す各コンポーネントの小道具と状態の種類は何ですか? –

+0

コンポーネント(OverviewPage)の1つを投稿できますか?あなたの輸入品は奇妙に見えます、なぜあなたはすべてを*として輸入しますか? – soywod

+0

@soywod私は './OverviewPage 'から' OverviewPageをインポートする'としてインポートを始めました。エラーメッセージを次のように変更しました: 'TS2322:Type '{OverviewPage:typeof OverviewPage; } 'はタイプ' ReactType 'に割り当てられません。 オブジェクトリテラルは既知のプロパティのみを指定でき、 'OverviewPage'はタイプ 'ReactType'には存在しません。 ' – Prichmp

答えて

1

私はこの正確な問題を持っていたし、どのような私が見つけたことは、これをしてきました。反応ルータは、propsとstateのどちらかが型か空のオブジェクトの場合にのみ満たされます。それらはanyに設定することはできません。

編集に細心の注意を払った後、私はこの問題が国家や小道具のタイプ以上のものかもしれないと思います。

エクスポートのデフォルトを使用していないため、実際にキーとその値がコンポーネントである値をエクスポートしています。リアクタはコンポーネントを期待していますが、あなたはそのキーだけを渡しています。問題を解決するにはデフォルトを使用するか、import {component}構文を使用します。

0

私はそれを働かせました。問題は、私がどのように輸出をしているかにありました。私はimport * as OverviewPage from './OverviewPage';を実行して何らかのオブジェクトをインポートしていたと思います。

代わりにexport default class OverviewPageを入力し、クラスをimport OverviewPage from './OverviewPage';としてインポートする必要があります。私がそれをした後、それは苦情なしで働き始めた。

関連する問題