1
私はreact-reduxとtypescriptを使っているので、.tsxファイルを持っています。私の単純なコードは非常にシンプルで明白ですが、typescriptコンパイラはProvider要素の型エラーを投げますので、私が間違ったことを理解できません。ここ要素に投げられた型エラー
私の単純なコード
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { Route, Router } from 'react-router';
...
ReactDOM.render(
<Provider store={store}>
<Router history={history}>
<Route path='/' component={MyTopComponent} breadcrumbIgnore>
<Route
path='home'
component={MyComponent}
>
</Route>
</Route>
</Router>
</Provider>,
document.getElementById('app'),
);
されており、ここでエラーです:
Property "render" are missing in type "Provider"
:私は、このエラーの説明を見てきたTSをサポートする崇高なエディタで
JSX element type 'Provider' is not a constructor function for JSX elements.
Types of property 'render' are incompatible.
Type '() => string | number | false | Element | Element[]' is not assignable to type '{(): string | number | false | Element | Element[];(): string | number | false | Element | Elem...'.
Type 'string | number | false | Element | Element[]' is not assignable to type 'false | Element'.
Type 'string' is not assignable to type 'false | Element'.
助けてくれてありがとう!
P.S.ここにパッケージのバージョンです
"devDependencies": {
"@types/react": "16.0.7",
"@types/react-dom": "15.5.5",
"@types/react-i18next": "4.6.0",
"@types/react-redux": "5.0.9",
"@types/react-test-renderer": "15.5.4",
"awesome-typescript-loader": "3.2.3",
...
"tslint": "5.7.0",
"typescript": "2.5.3",
...
},
"dependencies": {
... ,
"i18next": "9.0.0",
"react": "15.6.1",
"react-dom": "15.6.1",
"react-dom-factories": "1.0.2",
"react-i18next": "6.0.0",
"react-redux": "5.0.6",
"react-router": "3.0.2",
"redux": "3.7.2",
...
},
新しいReact 16を使用していても、互換性のないバージョンのreact-reduxを使用することはできますか?それぞれのライブラリのバージョンを示す必要があります。 – JulienD
@ types/react-redux、@ types/react、@ types/react-domのバージョン番号を入力してください。 @JulienDが述べたように、react-reduxの入力は反応のための型付けと互換性がありません。 – pamelus
申し訳ありませんが、私はそれを行うことを忘れています。私はそれを追加します – Velidan