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

如何使用Amplify UI React库为注册表单添加自定义属性?

在Amplify UI React中为注册表单添加自定义必填属性

核心配置方法

你不需要完全重写注册表单,通过Authenticator组件的signUpFields配置项,就能轻松添加自定义属性、设置必填规则并调整字段顺序,同时保留Amplify默认的表单逻辑(如验证、错误提示)。

步骤1:确认AWS用户池自定义属性设置

先在AWS用户池控制台中,确保你的自定义属性(比如custom:organization)已创建,并且根据需求勾选必填选项(前端设置必填后,后端也需对应配置,否则注册会失败)。

步骤2:配置Amplify UI React的注册字段

以下是完整代码示例,展示如何添加自定义必填字段并调整顺序:

import { Authenticator } from '@aws-amplify/ui-react';
import '@aws-amplify/ui-react/styles.css';

export default function App() {
  // 配置注册表单字段:默认字段 + 自定义字段
  const signUpFields = [
    // 自定义字段顺序:把组织字段放在用户名后面
    {
      type: 'username',
      label: '用户名',
      required: true,
    },
    {
      type: 'text',
      name: 'custom:organization', // 必须和用户池自定义属性名完全一致
      label: '所属组织',
      required: true, // 设置为必填项
      placeholder: '请输入您的组织名称',
    },
    {
      type: 'password',
      label: '密码',
      required: true,
    },
    {
      type: 'email',
      label: '邮箱',
      required: true,
    },
  ];

  return (
    <Authenticator signUpFields={signUpFields}>
      {({ signOut, user }) => (
        <div>
          <h1>欢迎, {user.username}!</h1>
          <button onClick={signOut}>退出登录</button>
        </div>
      )}
    </Authenticator>
  );
}

关键说明

  • 字段名称匹配:name属性必须严格对应AWS用户池中的自定义属性名(格式为custom:属性名)
  • 必填规则:required: true会触发前端表单必填验证,同时要确保用户池该属性也设为必填
  • 调整顺序:修改signUpFields数组的元素顺序,即可改变表单中字段的显示顺序
  • 自定义验证:如果需要更复杂的校验逻辑,可在字段中添加validate函数,示例如下:
{
  type: 'text',
  name: 'custom:organization',
  label: '所属组织',
  required: true,
  validate: (value) => {
    if (!value || value.length < 2) {
      return '组织名称至少需要2个字符';
    }
    return true;
  },
}

额外注意

确保你的Amplify项目已正确关联用户池(可通过amplify configure auth完成初始化,或手动配置aws-exports.js文件)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 09:05:25