JSX元素类型“ xxx”不是JSX元素的构造函数属性“ yyy”的保护类型为“ xxx”,但公共类型为“ ElementClass”

【字号: 日期:2024-04-20浏览:7作者:雯心
(adsbygoogle = window.adsbygoogle || []).push({}); 如何解决JSX元素类型“ xxx”不是JSX元素的构造函数属性“ yyy”的保护类型为“ xxx”,但公共类型为“ ElementClass”?

您需要将您的反应类型降级到以下15.0.25版本。从15.0.25版本开始,所有生命周期方法都必须公开。

这是一个有关它的问题:https://github.com/DefinitelyTyped/DefinitelyTyped/issues/16893

更好的解决方案是在voyager回购中创建一个问题,该问题将告诉他们其组件与更新的反应类型不兼容。他们使用^15.0.8。

解决方法

我正在尝试Vega-Lite从一个名为的项目中导入一个React类Voyager。

这是我的代码:

import * as React from ’react’;import {VegaLite} from ’datavoyager/build/components/vega-lite’;export interface Props { spec: any; logger: any;}export const View = ({spec,logger}: Props) => { return( <VegaLite spec={spec} logger={logger}/> );};

这是我的错误:

[ts]JSX元素类型’VegaLite’不是JSX元素的构造函数。属性’componentDidMount’在类型’VegaLite’中受保护,但在类型’ElementClass’中是公共的。

我知道在课堂上Vega-Lite,功能componentDidMount()确实是protected。但是,如何解决此错误?

PS:我试过设置allowSyntheticDefaultImports到true我的tsconfig.json,但同样的错误仍然存在。

相关文章: