【问题标题】:JSX element type does not have any construct or call signaturesJSX 元素类型没有任何构造或调用签名
【发布时间】:2016-10-07 03:40:00
【问题描述】:

我使用左边这个简单的 React 元素作为右边页面的根元素。

如何修复显示的错误?

【问题讨论】:

  • 您的代码在我看来是正确的;您使用的是哪个版本的打字稿?似乎是 1.8 为 React 无状态函数组件提供了更多支持。
  • 是的,最新版本的 TS 和 Typings 和定义。
  • 我也有同样的问题。似乎不支持无状态组件。 ts 1.8.10.
  • 默认直接导出App,不带cssModules HOC,是否还会收到消息?修改app.tsx的文件名时是否还有问题,并且没有收到关于无法解决的需求的错误消息?

标签: reactjs typescript react-css-modules


【解决方案1】:

这个 hacky typecast 使错误消失了,虽然我完全不明白:

const App: any = require('./components/views/app/app');

【讨论】:

  • 在这里,您将App 转换为Any 类型并绕过类型系统。 Typescript 错误消失了,因为现在您实际上只是在使用 Javascript。
【解决方案2】:

怎么样:

class App extends React.Component<any, any> {
    render() {
        return <div>foo</div>;
    }
}

【讨论】:

  • 谢谢,但我不明白这有什么帮助。 app.ts 文件返回 cssModules(App, css),而不是 app.ts 文件中的函数 App。
【解决方案3】:

React 期望来自 mainScreenHelper.tsx 中导入的 App 的 React.StatelessComponent 这意味着您需要在App中提供该接口

interface IProps {}
const App : React.StatelessComponent<IProps> = () => (
   <div></div>
);

【讨论】:

    猜你喜欢
    • 2021-11-30
    • 2016-03-05
    • 2021-09-21
    • 2021-12-26
    • 2017-12-05
    • 1970-01-01
    • 2022-06-21
    • 2022-12-15
    • 2021-11-27
    相关资源
    最近更新 更多