gpt4 book ai didi

javascript - 用于从字符串创建 JSX 元素的正确 TypeScript 类型

转载 作者:行者123 更新时间:2023-11-30 06:14:59 27 4
gpt4 key购买 nike

我有一个组件,我想将其默认呈现为 h2。我希望消费者能够根据需要指定不同的元素。以下代码导致错误:

TS2604 - JSX 元素类型“ElementType”没有任何构造或调用签名

我想我明白为什么它会失败,TS 期望渲染一个 React 节点。为清楚起见,只要变量以大写字母开头(这是 JSX 的要求),React 就能够呈现引用为字符串的元素。我以前在 vanilla JS + React 中成功完成过这个,我只是不知道如何满足 TypeScript。

如何在不使用 elementType 的情况下让 TypeScript 渲染它?: any

import React, {ReactNode} from 'react'

interface Props {
children: ReactNode;
elementType?: string;
}

export default function ({children, elementType: ElementType = 'h2'}: Props): JSX.Element {
return (
<ElementType>{children}</ElementType>
);
}

最佳答案

使用keyof JSX.IntrinsicElements:

import * as React from 'react'

interface Props {
children: React.ReactNode;
elementType?: keyof JSX.IntrinsicElements;
}

export default function ({ children, elementType: ElementType = 'h2' }: Props): JSX.Element {
return (
<ElementType>{children}</ElementType>
);
}

关于javascript - 用于从字符串创建 JSX 元素的正确 TypeScript 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56675652/

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