在TypeScript中使用JS React组件:JSX元素类型'MyComponent'不是JSX元素的构造函数

问题描述 投票:1回答:1

我正在使用一个使用React框架的JavaScript旧项目。我们定义了一些React组件,希望在一个完全不同的TypeScript React项目中重复使用。

JS React组件在controls.jsx文件中定义,外观如下:

export class MyComponent extends React.Component {
  render() {
    return <h1>Hi from MyComponent! Message provided: {this.props.message}</h1>;
  }
}

在我的TypeScript React项目中,我试图像这样使用它:

import * as React from "react";
import * as ReactDOM from "react-dom";
import { MyComponent } from "../JavaScriptProject/controls";

ReactDOM.render(
  <MyComponent message="some nice message"/>,
    document.getElementById("documents-tree")
);

但是我收到以下错误:enter image description here

错误消息说:

JSX元素类型'MyComponent'不是JSX的构造函数元素。类型“ MyComponent”缺少以下属性从类型'ElementClass'中获取:context,setState,forceUpdate,props和2more.ts(2605)JSX元素类不支持属性,因为它没有“道具”属性。ts(2607)

我已经尝试过使用this问题中描述的自定义类型文件的解决方案,但是它什么都没有改变。

我了解JS组件具有TypeScript所需的一些强类型属性,但是在我的tsconfig.json中,我将allowJs

设置为true:
{
  "compilerOptions": {
    "allowJs": true,
    "baseUrl": ".",
    "experimentalDecorators": true,
    "jsx": "react",
    "noEmitOnError": true,
    "outDir": "lib",
    "sourceMap": true,
    "target": "es5",
    "lib": [
      "es2015",
      "dom"
    ]
  },
  "exclude": [
    "node_modules",
    "dist",
    "lib",
    "lib-amd"
  ]
}

所以我希望它能起作用...

感谢您的帮助

我正在使用一个使用React框架的JavaScript旧项目。我们定义了一些React组件,我想在一个完全不同的TypeScript React项目中重复使用。 JS ...

javascript node.js reactjs typescript single-page-application
1个回答
0
投票

跟随此tutorial

© www.soinside.com 2019 - 2024. All rights reserved.