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

如何在ReScript中获取表单输入字段的url1与url2值?

问题分析

你遇到的问题核心在于ReactEvent.Form.t是ReScript中通用的表单事件类型,并不包含url1/url2这类具体字段,直接通过.访问会被类型检查器拦截。Form组件提交的values本质是键值对字典结构,需要通过ReScript的字典操作或类型断言来获取对应值。

解决方案

方法1:使用Js.Dict API直接取值

这是最直接的方式,无需额外定义类型,利用字典API按键名获取值:

let onSubmit2URLs = (values: ReactEvent.Form.t) => {
  // 将values转换为字符串类型的字典
  let valuesDict = values->Js.Dict.fromObj
  // 按键名获取值,返回option<string>类型
  let url1 = Js.Dict.get(valuesDict, "url1")
  let url2 = Js.Dict.get(valuesDict, "url2")

  Js.log("These URLs are not a match:")
  Js.log(url1)
  Js.log(url2)
}

注意Js.Dict.get返回option<string>,如果需要处理空值,可通过模式匹配或Option.getExn(生产环境不推荐,需确保字段必传)处理。

方法2:自定义类型+类型断言

如果想用.语法访问字段,可先定义对应表单值的类型,再将values断言为该类型:

// 定义表单值的类型,与表单字段一一对应
type FormValues = {
  url1: string,
  url2: string,
}

let onSubmit2URLs = (values: ReactEvent.Form.t) => {
  // 类型断言,告知编译器values符合FormValues结构
  let formValues = values->Obj.magic: FormValues

  Js.log("These URLs are not a match:")
  Js.log(formValues.url1)
  Js.log(formValues.url2)
}

这种方式更贴合ReScript的类型风格,但要确保表单提交的字段与定义的类型完全一致,避免运行时风险。

额外提示

如果使用的是Ant Design Form组件,可在<Form.Item>上添加rules配置,确保url1和url2为必填项,这样提交时不会出现空值,处理逻辑更安全。

内容的提问来源于stack exchange,提问作者Dark Knight

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:49:57