Tôi đang làm việc với một dự án kế thừa JavaScript sử dụng khung React. Chúng tôi có một số thành phần React được xác định mà tôi muốn sử dụng lại trong một dự án TypeScript React hoàn toàn khác.
Thành phần JS React được định nghĩa trong tệp controls.jsx và trông như sau:
export class MyComponent extends React.Component {
render() {
return <h1>Hi from MyComponent! Message provided: {this.props.message}</h1>;
}
}
Trong dự án TypeScript React của tôi, tôi đang cố gắng sử dụng nó như thế:
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")
);
Thông báo lỗi cho biết:
Kiểu phần tử JSX 'MyComponent' không phải là hàm xây dựng cho các phần tử JSX. Loại 'MyComponent' thiếu các thuộc tính sau từ loại 'ElementClass': bối cảnh, setState, forceUpdate, props và 2 more.ts (2605) Lớp phần tử JSX không hỗ trợ các thuộc tính vì nó không có thuộc tính 'props'. (2607)
Tôi đã thử giải pháp với tệp đánh máy tùy chỉnh được mô tả trong câu hỏi này , nhưng nó không thay đổi gì.
Tôi hiểu rằng thành phần JS có một số thuộc tính được gõ mạnh theo yêu cầu của TypeScript, nhưng trong tsconfig.json, tôi có các allowJ được đặt thành 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"
]
}
Vì vậy, tôi hy vọng nó sẽ hoạt động ...
Cảm ơn bạn đã giúp đỡ