SmartClient TSX添加表单文本报TS2339:fields不存在错误排查
错误原因
- 你复制的示例是SmartClient原生的XML声明式语法,不是React TSX支持的语法格式。TSX会将小写开头的
<fields>、<field>标签识别为原生DOM元素,但JSX内置元素类型集合JSX.IntrinsicElements中没有这两个元素的定义,因此抛出TS2339类型错误。 - SmartClient v12.1p的React集成模式下,不支持用嵌套子标签的方式声明表单字段,官方XML示例仅适用于非React的原生SmartClient开发场景。
修复方案
TSX环境下DynamicForm的字段需要通过组件的fields属性传入配置数组,不要写嵌套的<fields>、<field>子标签,对应实现代码如下:
import { DynamicForm } from '@smartclient/react'; // 引入路径匹配你项目的实际依赖配置 function BusinessForm() { return ( <DynamicForm width={300} fields={[ { defaultValue: "Office Supplies", type: "header" // 对应官方示例的HeaderItem }, { title: "Item", type: "text" } ]} /> ) } export default BusinessForm;
- 如果修改后仍有类型报错,检查项目是否安装了SmartClient对应的TypeScript类型声明包,确认
tsconfig.json的compilerOptions.types配置中已包含SmartClient相关类型。 - 后续参考官方文档时,XML格式的示例都需要转换成props传参的形式在TSX中使用,不要直接复制嵌套标签结构。
内容的提问来源于stack exchange,提问作者Darius.V
相关产品推荐
相关产品推荐

