【问题标题】:Type error thrown on element元素上抛出的类型错误
【发布时间】:2017-10-11 10:04:00
【问题描述】:

我正在使用 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'),
);

这是错误:

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'.

在支持 TS 的 Sublime 编辑器中,我看到了这个错误的描述:

Property "render" are missing in type "Provider"

感谢您的帮助!

附:这是软件包版本

   "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 版本?您应该指明各自的库版本。
  • 请提供您使用的@types/react-redux、@types/react 和@types/react-dom 的版本号。正如@JulienD 提到的,您的 react-redux 类型与 react 类型不兼容。
  • 对不起,我忘记了。我加一下

标签: javascript reactjs typescript compiler-errors react-redux


【解决方案1】:

我找到了解决这个问题的方法。

正如 JulienD 和 pamelus 提到的检查依赖版本我寻找的 redux/react/dom 发布版本

所以当我更新这些包时,打字稿编译器开始正常工作

"@types/react": 16.0.7 -"16.0.10",
"@types/react-dom": 15.5.5 -> "16.0.1",
"@types/react-redux": 5.0.9 -> "5.0.10",

希望它可以帮助某人。最好的问候。

【讨论】:

    猜你喜欢
    • 2022-11-24
    • 2021-10-20
    • 2014-11-11
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-10
    相关资源
    最近更新 更多