2016-12-30 1 views
0

У меня есть существующий компонент React, который закодирован в JSX, и я не могу преобразовать в TypScript в это время. Я хотел бы использовать его в новом приложении React, которое записывается в Typcript. Я не могу понять, можно ли импортировать и использовать код JSX в коде TSX. Это возможно? Как мне это сделать?Как импортировать существующий компонент React, определенный в JSX в модуле TypScript (.tsx)

Благодаря

В приведенном ниже примере выдает ошибку: 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/> 
    ); 
    } 
} 
+0

Я отказался от использования TypScript для этого проекта и никогда не отслеживал, почему ответ @ djwwwww не работал для меня. Мой инстинкт говорит, что это правильно, но, поскольку я не мог подтвердить, я не заметил, что это принято. – Jobu

ответ

0

Попытка изменить свой оператор импорта:

import OldCode from './OldCode'; 

Если вы используете webpack, вам может понадобиться добавить .jsx к вашим распознающим тоже.

+0

спасибо за просмотр, но изменение синтаксиса импорта не изменяет результаты. У меня есть .jsx в моем решении для webpack, но это находится ниже по течению отсюда. Мне нужно tsc, чтобы сначала скомпилировать tsx. – Jobu

0
declare module '*.jsx' { 
    var _: React.Component<any, any>; 
    export default _; 
} 

и использовать его как

import OldCode from './OldCode.jsx'; 

поместить это в какой-то файл, убедитесь, что он включен в tsconfig.json.

и, конечно же, убедитесь, что веб-пакет упаковывает их все.

+0

это звучит как правильный трек, но я пробовал его и все еще получаю ту же ошибку. Возможно, я неправильно понял инструкцию? Я создал новый файл 'jsx_compat.tsx' в том же каталоге, что и OldCode.jsx, который содержит ваш первый блок и добавлен' jsx_compat.tsx' в мой tsconfig.json. – Jobu

+0

Извините, я не могу отредактировать комментарий выше, когда я попал в игру слишком рано. это звучит как правильный трек, но я пробовал его и все еще получаю ту же ошибку. Возможно, я неправильно понял инструкцию? Я создал новый файл 'jsx_compat.tsx' в том же каталоге, что и OldCode.jsx, который содержит ваш первый блок и добавлен' jsx_compat.tsx' в мой tsconfig.json. Я также изменил свои операторы импорта для соответствия. Любые предложения? Я запомню, чтобы убедиться, что веб-пакет упаковывает их все, но прямо сейчас я терпеть неудачу при вызове 'tsc'. – Jobu

+0

@ Jobu вот пример того, как вы импортируете другие, кроме ts модули, https://github.com/webgl-component/core. И какая ошибка генерировала 'tsc'? –

Смежные вопросы