JSX元素类型'xxx'不是JSX元素的构造函数。属性'yyy'在'xxx'类型中受到保护,但在'ElementClass'类型中是public

时间:2017-08-30 21:40:03

标签: reactjs typescript

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

这是我的代码:

[User(key=Key('User', 5275456790069248), auth_ids=[u'abc@gmail.com'], created=datetime.datetime(2017, 8, 29, 22, 50, 36, 297407), email='abc@gmail.com'), 
User(key=Key('User', 5838406743490560), auth_ids=[u'def@gmail.com'], created=datetime.datetime(2017, 8, 29, 16, 23, 16, 406468), email='def@gmail.com'), 
User(key=Key('User', 6401356696911872), auth_ids=[u'ghi@gmail.com'], created=datetime.datetime(2017, 8, 30, 12, 34, 51, 816926), email='ghi@gmail.com')]

这是我的错误:

  

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

我知道在课程Vega-Lite中,函数users_new_list = [] allusers = User.query().fetch() for user in all_users: #How to get key in string and pass into 'users_new_list' users_new_list.append(keyString) 确实是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}/> ); }; 。但是如何修复此错误?

PS:我已尝试在componentDidMount()中将protected设为allowSyntheticDefaultImports,但同样的错误仍然存​​在。

1 个答案:

答案 0 :(得分:2)

您需要将您的反应类型降级到formula(mod_std) ## mpg ~ `log(wt)` + qsec + `log(wt):qsec` ## <environment: 0x000000000b1988c8> 以下版本。从15.0.25版本开始,所有生命周期方法都被强制公开。

以下是关于它的问题:https://github.com/DefinitelyTyped/DefinitelyTyped/issues/16893

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