【发布时间】:2016-04-17 09:59:44
【问题描述】:
简单示例:
import * as React from 'react'
declare function getFish(x: any): any;
declare var Tank: any;
var Aquarium = ({species}) => (
<Tank>
{getFish(species)}
</Tank>
);
let x = <Aquarium species="rainbowfish"/>;
结果:
(10,9):错误 TS2605:JSX 元素类型“元素”不是 JSX 元素的构造函数。
请注意,该错误与组件的用法有关(let x 声明)。似乎 React 的定义文件不允许这是一个有效的 JSX?我正在使用来自 tsd 的最新 React 0.14 定义文件,我做错了什么?
假设我定义了以下无状态功能组件(React v0.14)
let GreeterComponent = (props: {name: string}){
return <div>Hi {props.name}!</div>
}
在不同的组件中,我是这样使用它的:
class WrappingComponent extends React.Component{
render(){
let names = ['tom', 'john', 'simon'];
return (
<div className="names">
{names.map((name)=> <GreeterComponent name={name} />)}
</div>
);
}
}
我从 typescript 编译器收到此错误:
错误 TS2605:JSX 元素类型“元素”不是构造函数 对于 JSX 元素。 “元素”类型中缺少属性“渲染”。
我该如何解决?在打字稿中使用无状态功能组件的正确方法是什么?我正在使用来自 tsd 的最新 react.d.ts
【问题讨论】:
-
能否请您发布有关此问题的代码示例?以及您收到的错误。它将帮助我们更轻松地找到您的问题。
-
另外,请阅读如何提出一个好的问题指南。 stackoverflow.com/help/how-to-ask
-
抱歉,我是 afk 并通过电话发布,稍后会更新我的问题
-
@toskv - 我用更多信息编辑了我的问题
-
您可以尝试添加类型吗?
let GreeterComponent: React.SFC
标签: reactjs typescript tsx