gpt4 book ai didi

reactjs - 错误 "JSX element type ' .. .' does not have any construct or call signatures"是什么意思?

转载 作者:搜寻专家 更新时间:2023-10-30 20:28:37 26 4
gpt4 key购买 nike

我写了一些代码:

function renderGreeting(Elem: React.Component<any, any>) {
return <span>Hello, <Elem />!</span>;
}

我收到一个错误:

JSX element type Elem does not have any construct or call signatures

这是什么意思?

最佳答案

这是构造函数实例之间的混淆。

请记住,当您在 React 中编写组件时:

class Greeter extends React.Component<any, any> {
render() {
return <div>Hello, {this.props.whoToGreet}</div>;
}
}

你这样使用它:

return <Greeter whoToGreet='world' />;

不要这样使用它:

let Greet = new Greeter();
return <Greet whoToGreet='world' />;

在第一个示例中,我们传递了Greeter,即我们组件的构造函数。这才是正确的用法。在第二个示例中,我们传递了 Greeter实例。这是不正确的,并且会在运行时失败并出现类似“对象不是函数”的错误。


这段代码的问题

function renderGreeting(Elem: React.Component<any, any>) {
return <span>Hello, <Elem />!</span>;
}

是它期待 React.Component实例。你想要的是一个为 React.Component 获取构造函数的函数:

function renderGreeting(Elem: new() => React.Component<any, any>) {
return <span>Hello, <Elem />!</span>;
}

或类似的:

function renderGreeting(Elem: typeof React.Component) {
return <span>Hello, <Elem />!</span>;
}

关于reactjs - 错误 "JSX element type ' .. .' does not have any construct or call signatures"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31815633/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com