You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:21:01