React中使用Web Components无法识别自定义标签报错如何解决
你遇到的Property 'vaadin-text-field' does not exist on type 'JSX.IntrinsicElements'报错属于TypeScript类型定义缺失问题,并不是React本身无法渲染Web Components,React 16及以上版本本身就支持渲染自定义标签,不需要强制依赖Reactify-WC,可选择的解决方案如下:
- 方案1:补充自定义元素的TypeScript类型声明
在项目根目录或类型文件夹下新建custom-elements.d.ts声明文件,添加对应自定义标签的类型定义即可消除报错:
import type * as React from "react"; declare global { namespace JSX { interface IntrinsicElements { // 按格式添加你用到的所有自定义标签 "vaadin-text-field": React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement> & { label?: string; // 可以按需补充该组件支持的其他自定义属性 }; "vaadin-button": React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>; } } }
添加完成后重启编辑器的TypeScript服务即可生效。
方案2:升级到React 19及以上版本
React 19已经原生实现了对Web Components的全量兼容,包括自定义属性传递、自定义事件绑定、类型自动适配等能力,升级后不需要额外配置即可直接使用自定义标签。方案3:临时忽略类型校验
如果只是临时少量使用Web Components,不需要长期维护类型,可以在自定义标签行上方添加// @ts-ignore注释临时忽略TypeScript校验,React本身可以正常渲染该标签。
Reactify-WC本质是将Web Components自动包装为标准React组件的工具类库,主要用于简化老版本React下自定义属性传递、事件绑定的流程,并非使用Web Components的必要依赖。
内容的提问来源于stack exchange,提问作者Chandra Eskay
相关产品推荐
相关产品推荐

