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

如何将Form.Item中提取的getFieldValue传递给自定义passwordConfirmValidation函数

实现方案

方法1:直接传递getFieldValue作为参数

这种方式不需要修改原有passwordConfirmValidation的外层结构,只需要在validator调用时将getFieldValue作为参数传入即可:

<Form.Item rules={[
    ({getFieldValue}) => ({
        validator: (_, value) => passwordConfirmValidation(_, value, getFieldValue)
    })
]}>

对应的自定义校验函数接收参数即可使用:

const passwordConfirmValidation = async (_, value, getFieldValue) => {
  // 内部直接调用传入的getFieldValue
  const originPassword = getFieldValue('password');
  if(value !== originPassword) {
    return Promise.reject(new Error('两次输入密码不一致'));
  }
  return Promise.resolve();
}

方法2:高阶函数封装校验器

如果想要规则部分的代码更简洁,可以把自定义校验函数封装为高阶函数,预先接收getFieldValue参数后返回实际的校验逻辑:

// 封装高阶校验函数
const passwordConfirmValidation = (getFieldValue) => async (_, value) => {
  const originPassword = getFieldValue('password');
  if(value !== originPassword) {
    return Promise.reject(new Error('两次输入密码不一致'));
  }
  return Promise.resolve();
}

// Form.Item部分直接调用传参即可
<Form.Item rules={[
    ({getFieldValue}) => ({
        validator: passwordConfirmValidation(getFieldValue)
    })
]}>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 18:09:03