如何在Typescript模块(.tsx)中导入JSX中定义的现有React组件

时间:2016-12-30 02:33:33

标签: reactjs typescript jsx tsc

我有一个在JSX中编码的现有React组件,此时我无法转换为Typescript。我想在一个用Typescript编写的新React应用程序中使用它。我无法弄清楚是否可以在TSX代码中导入和使用JSX代码。这可能吗?我该怎么做?

由于

以下示例给出了错误:TS2604:JSX element type 'OldCode' does not have any construct or call signatures.

OldCode.jsx

import React from 'react'

export default React.createClass({
  render() {
    return <div>OldCode</div>
  }
})

NewCode.tsx

import * as React from 'react';
import { OldCode } from './OldCode';

export default class NewCode extends React.Component<any, any> {
  render() {
    return (
      <OldCode/>
    );
  }
}

3 个答案:

答案 0 :(得分:0)

尝试更改导入语句:

import OldCode from './OldCode';

如果您使用的是webpack,则可能需要将.jsx添加到解析器中。

答案 1 :(得分:0)

ffmpeg

并像

一样使用它
declare module '*.jsx' {
    var _: React.Component<any, any>;
    export default _;
}

将此文件放入某个文件中,确保它包含在import OldCode from './OldCode.jsx';

当然,请确保webpack将它们全部打包。

答案 2 :(得分:0)

由于没有接受的答案,我将链接到我的问题,该问题实际上回答了如何为现有组件编写定义文件(我的问题是关于包含在redux连接中的组件):

[How do I create a typescript definition file (d.ts) for an existing redux connected (jsx)component?

希望它有所帮助...