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

如何在react-jsonschema-form自定义组件中传递自定义props?

在react-jsonschema-form中给自定义Widget传递自定义Props

有两种常用方式可以给自定义Widget传递像dropdownType这类自定义属性:

方式一:直接在uiSchema中添加自定义属性

直接在字段的uiSchema配置里加入自定义属性,react-jsonschema-form会自动把这些属性传递给对应的Widget组件:

修改你的uiSchema.json:

"diplomas": {
  "ui:widget": "SelectField",
  "ui:label": false,
  "dropdownType": "arrow"
}

然后在你的自定义SelectField组件中,直接从props里接收该属性:

// 函数组件示例
const SelectField = ({ input, dropdownType, options, ...rest }) => {
  // 这里可以直接使用dropdownType的值
  console.log(dropdownType); // 输出 "arrow"
  
  return (
    <select {...input} className={`custom-dropdown ${dropdownType}`}>
      {options.map(({ label, value }) => (
        <option key={value} value={value}>
          {label}
        </option>
      ))}
    </select>
  );
};

方式二:通过ui:options包裹自定义属性

如果想把自定义属性和官方ui属性区分开,可以用ui:options字段来统一管理:

修改uiSchema.json:

"diplomas": {
  "ui:widget": "SelectField",
  "ui:label": false,
  "ui:options": {
    "dropdownType": "arrow"
  }
}

对应的组件中,从uiOptions属性里提取自定义值:

const SelectField = ({ input, uiOptions, options, ...rest }) => {
  const { dropdownType } = uiOptions;
  
  return (
    <select {...input} className={`custom-dropdown ${dropdownType}`}>
      {options.map(({ label, value }) => (
        <option key={value} value={value}>
          {label}
        </option>
      ))}
    </select>
  );
};

两种方式都能正常工作,推荐用第二种,因为它能让uiSchema的结构更清晰,避免自定义属性和官方ui字段冲突。

内容的提问来源于stack exchange,提问作者Matej Peluha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:55:32