假设需要让大模型生成一个React表单组件代码,请设计一个包含上下文约束的Prompt(需包含数据验证、错误提示等要求) 整理
假设需要让大模型生成一个React表单组件代码,请设计一个包含上下文约束的Prompt(需包含数据验证、错误提示等要求)
问题
假设需要让大模型生成一个React表单组件代码,请设计一个包含上下文约束的Prompt(需包含数据验证、错误提? 等要求)
标准回答
假设需要让大模型生成一个React表单组件代码,请设计一个包含上下文约束的Prompt(需包含数据验证、错误提示等要求)VIP中等大模型标记分享31022面试问答让大模型生成一个能直接用的 React 表单组件,Prompt 得把上下文约束写死,不然 AI 就会按自己的理解乱发挥。一个完整的 Prompt 应该覆盖四个维度:字段定义、验证规则、交互行为、代码规范。直接上一个实战级的 Prompt 示例:▼plaintext复制代码用 React 18 + TypeScript + React Hook Form 写一个用户注册表单组件。
字段清单:
-
用户名:必填,2-10 个字符,只能包含字母数字下划线
-
邮箱:必填,标准邮箱格式
-
密码:必填,8-20 位,至少包含一个大写、一个小写、一个数字
-
确认密码:必填,必须和密码字段一致
-
手机号:选填,11 位数字,1 开头
验证行为:
-
每个字段失焦时触发校验,不要边打字边校验
-
错误提示红色小字,显示在对应输入框正下方
-
密码强度用三段式进度条展示(弱/中/强)
-
确认密码字段只在密码字段有值后才启用
提交逻辑:
-
任一必填字段未通过校验时,提交按钮 disabled 且置灰
-
点击提交后按钮变成 loading 状态,显示”提交中…”
-
请求完成前禁止重复点击
-
成功后调用 onSuccess 回调并清空表单,失败后保留已填内容
代码要求:
-
用函数组件 + hooks,不用 class 组件
-
类型定义单独放一个 types.ts 文件
-
验证规则用 zod schema 定义,不要散落在组件里
-
错误信息统一放 constants.ts,支持国际化替换
-
样式用 Tailwind CSS,响应式适配移动端
-
关键逻辑加注释,特别是正则表达式要写清楚匹配什么
输出格式:
-
RegisterForm.tsx(主组件)
-
types.ts(类型定义)
-
schema.ts(zod 验证规则)
-
constants.ts(错误信息常量)
-
最后给一个使用示例这个 Prompt 的关键在于把每个细节都定死了,AI 照着抄就行,没有发挥空间就不会出幺蛾子。
扩展知识
为什么用 React Hook Form 而不是受控组件传统的受控组件写法,每个字段都要 useState,每次输入都触发 setState,组件就会重新渲染。5 个字段的表单,用户打一个字就要渲染 5 遍,字段多了性能很难看。React Hook Form 用的是非受控组件,通过 ref 直接读取 DOM 的值,只在提交或校验时才收集数据。同样 5 个字段,用户打字时组件压根不重渲染,性能差距能到 10 倍以上。而且受控组件写起来很啰嗦,每个字段都要写 value、onChange、错误状态,代码量轻松翻倍。React Hook Form 用 register 一行搞定,代码干净很多。验证库选型对比维度zodyupjoi包体积12KB22KB140KBTypeScript 支持原生,类型推导完美需要额外配置类型支持较弱API 风格链式调用,更现代链式调用配置对象式错误信息定制简单直接需要额外配置比较麻烦生态整合React Hook Form 官方推荐社区主流主要用在 Node 端运行时校验支持支持支持现在新项目基本都用 zod,跟 TypeScript 配合是最好的,定义一个 schema 就能同时得到运行时校验和类型定义,不用写两遍。写 Prompt 容易忽略的坑很多人写 Prompt 只关注主流程,边界情况完全不提。AI 默认是不会处理这些的,你不说它就不做。比如用户名前后带空格,不 trim 的话会存进数据库,后面登录的时候就对不上了。这种细节要在 Prompt 里明确写出来。分步生成 vs 一次性生成复杂表单不建议一个 Prompt 全搞定。更好的做法是分三轮:1)第一轮让 AI 生成类型定义和验证 schema,确认字段和规则没问题
2) 第二轮基于第一轮的输出,生成组件骨架和基础交互
3) 第三轮加上样式和性能优化每一轮都能检查,出问题好定位。一口气全塞进去,AI 经常顾此失彼,验证规则对了但交互逻辑不对,或者交互对了但样式乱七八糟。相关资源:React Hook Form 官方文档:https://react-hook-form.com/Tailwind CSS 官方文档:https://tailwindcss.com/Zod 类型验证库:https://github.com/colinhacks/zod
面试官追问
- 提问:表单字段多了以后 Prompt 会很长,怎么组织才能让 AI 不漏东西?回答:用结构化格式来组织,比如 Markdown 表格或者 YAML 风格的缩进。每个字段单独一个 block,里面包含名称、类型、必填性、校验规则、错误提示。AI 对结构化数据的理解能力比纯文本强很多,漏东西的概率会低不少。另外可以在末尾加一句”请确认你理解了所有 N 个字段的要求后再生成代码”,让 AI 先复述一遍需求。- 提问:如果验证逻辑很复杂,比如字段之间有联动关系,Prompt 该怎么写?
- 回答:联动关系要单独拎出来写清楚,不要混在字段定义里。比如”当用户类型选择企业时,公司名称和营业执照号变成必填”,这种就单独一段描述。还可以用伪代码或者流程图来表达,比如”if userType === ‘company’ then companyName.required = true”。越复杂的逻辑越要写得明确,别指望 AI 能猜出你的意图。- 提问:生成的代码跑起来有 bug,怎么通过改 Prompt 来修而不是自己手动改?
- 回答:把 bug 现象描述清楚喂回去。比如”你生成的代码在确认密码字段校验时有问题,当密码字段清空后再填确认密码,校验不会触发。请修复这个问题,确保密码字段变化时会重新校验确认密码字段”。本质上就是把你 debug 的思路用自然语言写出来。如果 bug 很隐蔽,可以把出问题的代码段贴回去,让 AI 重点看那一块。- 提问:React Hook Form 和 Formik 你更推荐哪个?为什么?
- 回答:现在新项目肯定选 React Hook Form。性能上,React Hook Form 是非受控组件,重渲染次数少很多,官方 benchmark 显示能快 2-3 倍。体积上,React Hook Form 压缩后 8KB,Formik 要 12KB。API 上,React Hook Form 的 register 比 Formik 的 Field 组件更简洁。唯一 Formik 还有点优势的是社区资料多一些,毕竟出来得早,但 React Hook Form 现在文档也很完善了,上手不难。
为什么用 React Hook Form 而不是受控组件验证库选型对比写 Prompt 容易忽略的坑分步生成 vs 一次性生成
提问:表单字段多了以后 Prompt 会很长,怎么组织才能让 AI 不漏东西?提问:如果验证逻辑很复杂,比如字段之间有联动关系,Prompt 该怎么写?提问:生成的代码跑起来有 bug,怎么通过改 Prompt 来修而不是自己手动改?提问:React Hook Form 和 Formik 你更推荐哪个?为什么?热门面试题目榜更多说说 Java 中 HashMap 的原理?9130Java 中的序列化和反序列化是什么?6255MySQL 索引的最左前缀匹配原则是什么?5662Java 中 ConcurrentHashMap 1.7 和 1.8 之间有哪些区别?5067Java 中有哪些集合类?请简单介绍4854MySQL 的索引类型有哪些?4845详细描述一条 SQL 语句在 MySQL 中的执行过程。4218什么是 RAG?RAG 的主要流程是什么?4151MySQL 的存储引擎有哪些?它们之间有什么区别?4092数据库的脏读、不可重复读和幻读分别是什么?3900推荐教程更多AI 超级智能体亿级流量点赞系统教程智能协同云图库项目教程预览用户交流一起刷题学习、求职交流、反馈建议、获取更新通知面试鸭《用户协议》《隐私政策》友情链接编程导航老鱼简历代码小抄剪切助手联系我们商务合作站长:程序员鱼皮关注我们扫码关注面试鸭公众号
答案
解释LangChain框架中的Chain和Agent概念,并举例说明各自的应用场景上次浏览:2026-03-16 15:02:59什么是大模型的”涌现能力”?列举三种典型表现并解释其可能成因要让AI生成一个带表单验证的Vue3组件,请写出包含以下要素的Prompt上次浏览:2026-03-16 15:06:23假设需要让大模型生成一个React表单组件代码,请设计一个包含上下文约束的Prompt(需包含数据验证、错误提示等要求)上次浏览:2026-03-16 15:07:05请描述使用LangChain构建一个文档问答系统的关键技术组件及实现步骤上次浏览:2026-03-16 15:07:08假设要开发一个智能工单分类系统,请拆解AI可参与的环节并说明技术选型思路当需要处理超长大模型上下文窗口限制时,有哪些可行的工程解决方案?请举例说明假设在电商系统中,哪些功能适合直接使用大模型完成,哪些需要结合工程化手段?上次浏览:2026-03-16 15:07:38假设请你设计一个医疗问诊系统,如何平衡AI幻觉带来的风险与效率提升?需要哪些技术手段?设计智能客服系统时,如何通过知识库构建解决长尾问题?请描述具体实现步骤11341. 假设需要让大模型生成一个React表单组件代码,请设计一个包含上下文约束的Prompt(需包含数据验证、错误提示等要求)VIP中等大模型标记分享31022面试问答让大模型生成一个能直接用的 React 表单组件,Prompt 得把上下文约束写死,不然 AI 就会按自己的理解乱发挥。一个完整的 Prompt 应该覆盖四个维度:字段定义、验证规则、交互行为、代码规范。直接上一个实战级的 Prompt 示例:▼plaintext复制代码用 React 18 + TypeScript + React Hook Form 写一个用户注册表单组件。
字段清单:
-
用户名:必填,2-10 个字符,只能包含字母数字下划线
-
邮箱:必填,标准邮箱格式
-
密码:必填,8-20 位,至少包含一个大写、一个小写、一个数字
-
确认密码:必填,必须和密码字段一致
-
手机号:选填,11 位数字,1 开头
验证行为:
-
每个字段失焦时触发校验,不要边打字边校验
-
错误提示红色小字,显示在对应输入框正下方
-
密码强度用三段式进度条展示(弱/中/强)
-
确认密码字段只在密码字段有值后才启用
提交逻辑:
-
任一必填字段未通过校验时,提交按钮 disabled 且置灰
-
点击提交后按钮变成 loading 状态,显示”提交中…”
-
请求完成前禁止重复点击
-
成功后调用 onSuccess 回调并清空表单,失败后保留已填内容
代码要求:
-
用函数组件 + hooks,不用 class 组件
-
类型定义单独放一个 types.ts 文件
-
验证规则用 zod schema 定义,不要散落在组件里
-
错误信息统一放 constants.ts,支持国际化替换
-
样式用 Tailwind CSS,响应式适配移动端
-
关键逻辑加注释,特别是正则表达式要写清楚匹配什么
输出格式:
-
RegisterForm.tsx(主组件)
-
types.ts(类型定义)
-
schema.ts(zod 验证规则)
-
constants.ts(错误信息常量)
-
最后给一个使用示例这个 Prompt 的关键在于把每个细节都定死了,AI 照着抄就行,没有发挥空间就不会出幺蛾子。
为什么用 React Hook Form 而不是受控组件传统的受控组件写法,每个字段都要 useState,每次输入都触发 setState,组件就会重新渲染。5 个字段的表单,用户打一个字就要渲染 5 遍,字段多了性能很难看。React Hook Form 用的是非受控组件,通过 ref 直接读取 DOM 的值,只在提交或校验时才收集数据。同样 5 个字段,用户打字时组件压根不重渲染,性能差距能到 10 倍以上。而且受控组件写起来很啰嗦,每个字段都要写 value、onChange、错误状态,代码量轻松翻倍。React Hook Form 用 register 一行搞定,代码干净很多。验证库选型对比维度zodyupjoi包体积12KB22KB140KBTypeScript 支持原生,类型推导完美需要额外配置类型支持较弱API 风格链式调用,更现代链式调用配置对象式错误信息定制简单直接需要额外配置比较麻烦生态整合React Hook Form 官方推荐社区主流主要用在 Node 端运行时校验支持支持支持现在新项目基本都用 zod,跟 TypeScript 配合是最好的,定义一个 schema 就能同时得到运行时校验和类型定义,不用写两遍。写 Prompt 容易忽略的坑很多人写 Prompt 只关注主流程,边界情况完全不提。AI 默认是不会处理这些的,你不说它就不做。比如用户名前后带空格,不 trim 的话会存进数据库,后面登录的时候就对不上了。这种细节要在 Prompt 里明确写出来。分步生成 vs 一次性生成复杂表单不建议一个 Prompt 全搞定。更好的做法是分三轮:1)第一轮让 AI 生成类型定义和验证 schema,确认字段和规则没问题
2) 第二轮基于第一轮的输出,生成组件骨架和基础交互
3) 第三轮加上样式和性能优化每一轮都能检查,出问题好定位。一口气全塞进去,AI 经常顾此失彼,验证规则对了但交互逻辑不对,或者交互对了但样式乱七八糟。相关资源:React Hook Form 官方文档:https://react-hook-form.com/Tailwind CSS 官方文档:https://tailwindcss.com/Zod 类型验证库:https://github.com/colinhacks/zod
- 提问:表单字段多了以后 Prompt 会很长,怎么组织才能让 AI 不漏东西?回答:用结构化格式来组织,比如 Markdown 表格或者 YAML 风格的缩进。每个字段单独一个 block,里面包含名称、类型、必填性、校验规则、错误提示。AI 对结构化数据的理解能力比纯文本强很多,漏东西的概率会低不少。另外可以在末尾加一句”请确认你理解了所有 N 个字段的要求后再生成代码”,让 AI 先复述一遍需求。- 提问:如果验证逻辑很复杂,比如字段之间有联动关系,Prompt 该怎么写?
- 回答:联动关系要单独拎出来写清楚,不要混在字段定义里。比如”当用户类型选择企业时,公司名称和营业执照号变成必填”,这种就单独一段描述。还可以用伪代码或者流程图来表达,比如”if userType === ‘company’ then companyName.required = true”。越复杂的逻辑越要写得明确,别指望 AI 能猜出你的意图。- 提问:生成的代码跑起来有 bug,怎么通过改 Prompt 来修而不是自己手动改?
- 回答:把 bug 现象描述清楚喂回去。比如”你生成的代码在确认密码字段校验时有问题,当密码字段清空后再填确认密码,校验不会触发。请修复这个问题,确保密码字段变化时会重新校验确认密码字段”。本质上就是把你 debug 的思路用自然语言写出来。如果 bug 很隐蔽,可以把出问题的代码段贴回去,让 AI 重点看那一块。- 提问:React Hook Form 和 Formik 你更推荐哪个?为什么?
- 回答:现在新项目肯定选 React Hook Form。性能上,React Hook Form 是非受控组件,重渲染次数少很多,官方 benchmark 显示能快 2-3 倍。体积上,React Hook Form 压缩后 8KB,Formik 要 12KB。API 上,React Hook Form 的 register 比 Formik 的 Field 组件更简洁。唯一 Formik 还有点优势的是社区资料多一些,毕竟出来得早,但 React Hook Form 现在文档也很完善了,上手不难。
为什么用 React Hook Form 而不是受控组件验证库选型对比写 Prompt 容易忽略的坑分步生成 vs 一次性生成
提问:表单字段多了以后 Prompt 会很长,怎么组织才能让 AI 不漏东西?提问:如果验证逻辑很复杂,比如字段之间有联动关系,Prompt 该怎么写?提问:生成的代码跑起来有 bug,怎么通过改 Prompt 来修而不是自己手动改?提问:React Hook Form 和 Formik 你更推荐哪个?为什么?热门面试题目榜更多说说 Java 中 HashMap 的原理?9130Java 中的序列化和反序列化是什么?6255MySQL 索引的最左前缀匹配原则是什么?5662Java 中 ConcurrentHashMap 1.7 和 1.8 之间有哪些区别?5067Java 中有哪些集合类?请简单介绍4854MySQL 的索引类型有哪些?4845详细描述一条 SQL 语句在 MySQL 中的执行过程。4218什么是 RAG?RAG 的主要流程是什么?4151MySQL 的存储引擎有哪些?它们之间有什么区别?4092数据库的脏读、不可重复读和幻读分别是什么?3900推荐教程更多AI 超级智能体亿级流量点赞系统教程智能协同云图库项目教程预览用户交流一起刷题学习、求职交流、反馈建议、获取更新通知面试鸭《用户协议》《隐私政策》友情链接编程导航老鱼简历代码小抄剪切助手联系我们商务合作站长:程序员鱼皮关注我们扫码关注面试鸭公众号
来源: 假设需要让大模型生成一个React表单组件代码,请设计一个包含上下文约束的Prompt(需包含数据验证、错误提示等要求).mhtml
关键点
假设需要让大模型生成一个React表单组件代码,请设计一个包含上下文约束的Prompt(需包含数据验证、错误提示等要求)VIP中等大模型标记分享31022面试问答让大模型生成一个能直接用的 React 表单组件,Prompt 得把上下文约束写死,不然 AI 就会按自己的理解乱发挥。
-
一个完整的 Prompt 应该覆盖四个维度:字段定义、验证规则、交互行为、代码规范。
-
直接上一个实战级的 Prompt 示例:▼plaintext复制代码用 React 18 + TypeScript + React Hook Form 写一个用户注册表单组件。
-
字段清单:
-
用户名:必填,2-10 个字符,只能包含字母数字下划线
-
邮箱:必填,标准邮箱格式
-
密码:必填,8-20 位,至少包含一个大写、一个小写、一个数字
-
确认密码:必填,必须和密码字段一致
-
手机号:选填,11 位数字,1 开头
验证行为:
-
每个字段失焦时触发校验,不要边打字边校验
-
错误提示红色小字,显示在对应输入框正下方
-
密码强度用三段式进度条展示(弱/中/强)
-
确认密码字段只在密码字段有值后才启用
提交逻辑:
-
任一必填字段未通过校验时,提交按钮 disabled 且置灰
-
点击提交后按钮变成 loading 状态,显示”提交中…”
-
请求完成前禁止重复点击
-
成功后调用 onSuccess 回调并清空表单,失败后保留已填内容
代码要求:
-
用函数组件 + hooks,不用 class 组件
-
类型定义单独放一个 types.ts 文件
-
验证规则用 zod schema 定义,不要散落在组件里
-
错误信息统一放 constants.ts,支持国际化替换
-
样式用 Tailwind CSS,响应式适配移动端
-
关键逻辑加注释,特别是正则表达式要写清楚匹配什么
输出格式:
-
RegisterForm.tsx(主组件)
-
types.ts(类型定义)
-
schema.ts(zod 验证规则)
-
constants.ts(错误信息常量)
-
最后给一个使用示例这个 Prompt 的关键在于把每个细节都定死了,AI 照着抄就行,没有发挥空间就不会出幺蛾子。
为什么用 React Hook Form 而不是受控组件传统的受控组件写法,每个字段都要 useState,每次输入都触发 setState,组件就会重新渲染。
备注
假设需要让大模型生成一个React表单组件代码,请设计一个包含上下文约束的Prompt(需包含数据验证、错误提示等要求) 假设需要让大模型生成一个React表单组件代码,请设计一个包含上下文约束的Prompt(需包含数据验证、错误提示等要求)VIP中等大模型标记分享31022面试问答让大模型生成一个能直接用的 React 表单组件,Prompt 得把上下文约束写死,不然 AI 就会按自己的理解乱发挥。一个完整的 Prompt 应该覆盖四个维度:字段定义、验证规则、交互行为、代码规范。直接上一个实战级的 Prompt 示例:▼plaintext复制代码用 React 18 + TypeScript + React Hook Form 写一个用户注册表单组件。
-
字段清单:
-
用户名:必填,2-10 个字符,只能包含字母数字下划线
-
邮箱:必填,标准邮箱格式
-
密码:必填,8-20 位,至少包含一个大写、一个小写、一个数字
-
确认密码:必填,必须和密码字段一致
-
手机号:选填,11 位数字,1 开头
验证行为:
-
每个字段失焦时触发校验,不要边打字边校验
-
错误提示红色小字,显示在对应输入框正下方
-
密码强度用三段式进度条展示(弱/中/强)
-
确认密码字段只在密码字段有值后才启用
提交逻辑:
-
任一必填字段未通过校验时,提交按钮 disabled 且置灰
-
点击提交后按钮变成 loading 状态,显示”提交中…”
-
请求完成前禁止重复点击
-
成功后调用 onSuccess 回调并清空表单,失败后保留已填内容
代码要求:
-
用函数组件 + hooks,不用 class 组件
-
类型定义单独放一个 types.ts 文件
-
验证规则用 zod schema 定义,不要散落在组件里
-
错误信息统一放 constants.ts,支持国际化替换
-
样式用 Tailwind CSS,响应式适配移动端
-
关键逻辑加注释,特别是正则表达式要写清楚匹配什么
输出格式:
-
RegisterForm.tsx(主组件)
-
types.ts(类型定义)
-
schema.ts(zod 验证规则)
-
constants.ts(错误信息常量)
-
最后给一个使用示例这个 Prompt 的关键在于把每个细节都定死了,AI 照着抄就行,没有发挥空间就不会出幺蛾子。
为什么用 React Hook Form 而不是受控组件传统的受控组件写法,每个字段都要 useState,每次输入都触发 setState,组件就会重新渲染。5 个字段的表单,用户打一个字就要渲染 5 遍,字段多了性能很难看。React Hook Form 用的是非受控组件,通过 ref 直接读取 DOM 的值,只在提交或校验时才收集数据。同样 5 个字段,用户打字时组件压根不重渲染,性能差距能到 10 倍以上。而且受控组件写起来很啰嗦,每个字段都要写 value、onChange、错误状态,代码量轻松翻倍。React Hook Form 用 register 一行搞定,代码干净很多。验证库选型对比维度zodyupjoi包体积12KB22KB140KBTypeScript 支持原生,类型推导完美需要额外配置类型支持较弱API 风格链式调用,更现代链式调用配置对象式错误信息定制简单直接需要额外配置比较麻烦生态整合React Hook Form 官方推荐社区主流主要用在 Node 端运行时校验支持支持支持现在新项目基本都用 zod,跟 TypeScript 配合是最好的,定义一个 schema 就能同时得到运行时校验和类型定义,不用写两遍。写 Prompt 容易忽略的坑很多人写 Prompt 只关注主流程,边界情况完全不提。AI 默认是不会处理这些的,你不说它就不做。比如用户名前后带空格,不 trim 的话会存进数据库,后面登录的时候就对不上了。这种细节要在 Prompt 里明确写出来。分步生成 vs 一次性生成复杂表单不建议一个 Prompt 全搞定。更好的做法是分三轮:1)第一轮让 AI 生成类型定义和验证 schema,确认字段和规则没问题
2) 第二轮基于第一轮的输出,生成组件骨架和基础交互
3) 第三轮加上样式和性能优化每一轮都能检查,出问题好定位。一口气全塞进去,AI 经常顾此失彼,验证规则对了但交互逻辑不对,或者交互对了但样式乱七八糟。相关资源:React Hook Form 官方文档:https://react-hook-form.com/Tailwind CSS 官方文档:https://tailwindcss.com/Zod 类型验证库:https://github.com/colinhacks/zod
- 提问:表单字段多了以后 Prompt 会很长,怎么组织才能让 AI 不漏东西?回答:用结构化格式来组织,比如 Markdown 表格或者 YAML 风格的缩进。每个字段单独一个 block,里面包含名称、类型、必填性、校验规则、错误提示。AI 对结构化数据的理解能力比纯文本强很多,漏东西的概率会低不少。另外可以在末尾加一句”请确认你理解了所有 N 个字段的要求后再生成代码”,让 AI 先复述一遍需求。- 提问:如果验证逻辑很复杂,比如字段之间有联动关系,Prompt 该怎么写?
- 回答:联动关系要单独拎出来写清楚,不要混在字段定义里。比如”当用户类型选择企业时,公司名称和营业执照号变成必填”,这种就单独一段描述。还可以用伪代码或者流程图来表达,比如”if userType === ‘company’ then companyName.required = true”。越复杂的逻辑越要写得明确,别指望 AI 能猜出你的意图。- 提问:生成的代码跑起来有 bug,怎么通过改 Prompt 来修而不是自己手动改?
- 回答:把 bug 现象描述清楚喂回去。比如”你生成的代码在确认密码字段校验时有问题,当密码字段清空后再填确认密码,校验不会触发。请修复这个问题,确保密码字段变化时会重新校验确认密码字段”。本质上就是把你 debug 的思路用自然语言写出来。如果 bug 很隐蔽,可以把出问题的代码段贴回去,让 AI 重点看那一块。- 提问:React Hook Form 和 Formik 你更推荐哪个?为什么?
- 回答:现在新项目肯定选 React Hook Form。性能上,React Hook Form 是非受控组件,重渲染次数少很多,官方 benchmark 显示能快 2-3 倍。体积上,React Hook Form 压缩后 8KB,Formik 要 12KB。API 上,React Hook Form 的 register 比 Formik 的 Field 组件更简洁。唯一 Formik 还有点优势的是社区资料多一些,毕竟出来得早,但 React Hook Form 现在文档也很完善了,上手不难。
为什么用 React Hook Form 而不是受控组件验证库选型对比写 Prompt 容易忽略的坑分步生成 vs 一次性生成
提问:表单字段多了以后 Prompt 会很长,怎么组织才能让 AI 不漏东西?提问:如果验证逻辑很复杂,比如字段之间有联动关系,Prompt 该怎么写?提问:生成的代码跑起来有 bug,怎么通过改 Prompt 来修而不是自己手动改?提问:React Hook Form 和 Formik 你更推荐哪个?为什么?热门面试题目榜更多说说 Java 中 HashMap 的原理?9130Java 中的序列化和反序列化是什么?6255MySQL 索引的最左前缀匹配原则是什么?5662Java 中 ConcurrentHashMap 1.7 和 1.8 之间有哪些区别?5067Java 中有哪些集合类?请简单介绍4854MySQL 的索引类型有哪些?4845详细描述一条 SQL 语句在 MySQL 中的执行过程。4218什么是 RAG?RAG 的主要流程是什么?4151MySQL 的存储引擎有哪些?它们之间有什么区别?4092数据库的脏读、不可重复读和幻读分别是什么?3900推荐教程更多AI 超级智能体亿级流量点赞系统教程智能协同云图库项目教程预览用户交流一起刷题学习、求职交流、反馈建议、获取更新通知面试鸭《用户协议》《隐私政策》友情链接编程导航老鱼简历代码小抄剪切助手联系我们商务合作站长:程序员鱼皮关注我们扫码关注面试鸭公众号
解释LangChain框架中的Chain和Agent概念,并举例说明各自的应用场景上次浏览:2026-03-16 15:02:59什么是大模型的”涌现能力”?列举三种典型表现并解释其可能成因要让AI生成一个带表单验证的Vue3组件,请写出包含以下要素的Prompt上次浏览:2026-03-16 15:06:23假设需要让大模型生成一个React表单组件代码,请设计一个包含上下文约束的Prompt(需包含数据验证、错误提示等要求)上次浏览:2026-03-16 15:07:05请描述使用LangChain构建一个文档问答系统的关键技术组件及实现步骤上次浏览:2026-03-16 15:07:08假设要开发一个智能工单分类系统,请拆解AI可参与的环节并说明技术选型思路当需要处理超长大模型上下文窗口限制时,有哪些可行的工程解决方案?请举例说明假设在电商系统中,哪些功能适合直接使用大模型完成,哪些需要结合工程化手段?上次浏览:2026-03-16 15:07:38假设请你设计一个医疗问诊系统,如何平衡AI幻觉带来的风险与效率提升?需要哪些技术手段?设计智能客服系统时,如何通过知识库构建解决长尾问题?请描述具体实现步骤11341. 假设需要让大模型生成一个React表单组件代码,请设计一个包含上下文约束的Prompt(需包含数据验证、错误提示等要求)VIP中等大模型标记分享31022面试问答让大模型生成一个能直接用的 React 表单组件,Prompt 得把上下文约束写死,不然 AI 就会按自己的理解乱发挥。一个完整的 Prompt 应该覆盖四个维度:字段定义、验证规则、交互行为、代码规范。直接上一个实战级的 Prompt 示例:▼plaintext复制代码用 React 18 + TypeScript + React Hook Form 写一个用户注册表单组件。
-
字段清单:
-
用户名:必填,2-10 个字符,只能包含字母数字下划线
-
邮箱:必填,标准邮箱格式
-
密码:必填,8-20 位,至少包含一个大写、一个小写、一个数字
-
确认密码:必填,必须和密码字段一致
-
手机号:选填,11 位数字,1 开头
验证行为:
-
每个字段失焦时触发校验,不要边打字边校验
-
错误提示红色小字,显示在对应输入框正下方
-
密码强度用三段式进度条展示(弱/中/强)
-
确认密码字段只在密码字段有值后才启用
提交逻辑:
-
任一必填字段未通过校验时,提交按钮 disabled 且置灰
-
点击提交后按钮变成 loading 状态,显示”提交中…”
-
请求完成前禁止重复点击
-
成功后调用 onSuccess 回调并清空表单,失败后保留已填内容
代码要求:
-
用函数组件 + hooks,不用 class 组件
-
类型定义单独放一个 types.ts 文件
-
验证规则用 zod schema 定义,不要散落在组件里
-
错误信息统一放 constants.ts,支持国际化替换
-
样式用 Tailwind CSS,响应式适配移动端
-
关键逻辑加注释,特别是正则表达式要写清楚匹配什么
输出格式:
-
RegisterForm.tsx(主组件)
-
types.ts(类型定义)
-
schema.ts(zod 验证规则)
-
constants.ts(错误信息常量)
-
最后给一个使用示例这个 Prompt 的关键在于把每个细节都定死了,AI 照着抄就行,没有发挥空间就不会出幺蛾子。
为什么用 React Hook Form 而不是受控组件传统的受控组件写法,每个字段都要 useState,每次输入都触发 setState,组件就会重新渲染。5 个字段的表单,用户打一个字就要渲染 5 遍,字段多了性能很难看。React Hook Form 用的是非受控组件,通过 ref 直接读取 DOM 的值,只在提交或校验时才收集数据。同样 5 个字段,用户打字时组件压根不重渲染,性能差距能到 10 倍以上。而且受控组件写起来很啰嗦,每个字段都要写 value、onChange、错误状态,代码量轻松翻倍。React Hook Form 用 register 一行搞定,代码干净很多。验证库选型对比维度zodyupjoi包体积12KB22KB140KBTypeScript 支持原生,类型推导完美需要额外配置类型支持较弱API 风格链式调用,更现代链式调用配置对象式错误信息定制简单直接需要额外配置比较麻烦生态整合React Hook Form 官方推荐社区主流主要用在 Node 端运行时校验支持支持支持现在新项目基本都用 zod,跟 TypeScript 配合是最好的,定义一个 schema 就能同时得到运行时校验和类型定义,不用写两遍。写 Prompt 容易忽略的坑很多人写 Prompt 只关注主流程,边界情况完全不提。AI 默认是不会处理这些的,你不说它就不做。比如用户名前后带空格,不 trim 的话会存进数据库,后面登录的时候就对不上了。这种细节要在 Prompt 里明确写出来。分步生成 vs 一次性生成复杂表单不建议一个 Prompt 全搞定。更好的做法是分三轮:1)第一轮让 AI 生成类型定义和验证 schema,确认字段和规则没问题
2) 第二轮基于第一轮的输出,生成组件骨架和基础交互
3) 第三轮加上样式和性能优化每一轮都能检查,出问题好定位。一口气全塞进去,AI 经常顾此失彼,验证规则对了但交互逻辑不对,或者交互对了但样式乱七八糟。相关资源:React Hook Form 官方文档:https://react-hook-form.com/Tailwind CSS 官方文档:https://tailwindcss.com/Zod 类型验证库:https://github.com/colinhacks/zod
- 提问:表单字段多了以后 Prompt 会很长,怎么组织才能让 AI 不漏东西?回答:用结构化格式来组织,比如 Markdown 表格或者 YAML 风格的缩进。每个字段单独一个 block,里面包含名称、类型、必填性、校验规则、错误提示。AI 对结构化数据的理解能力比纯文本强很多,漏东西的概率会低不少。另外可以在末尾加一句”请确认你理解了所有 N 个字段的要求后再生成代码”,让 AI 先复述一遍需求。- 提问:如果验证逻辑很复杂,比如字段之间有联动关系,Prompt 该怎么写?
- 回答:联动关系要单独拎出来写清楚,不要混在字段定义里。比如”当用户类型选择企业时,公司名称和营业执照号变成必填”,这种就单独一段描述。还可以用伪代码或者流程图来表达,比如”if userType === ‘company’ then companyName.required = true”。越复杂的逻辑越要写得明确,别指望 AI 能猜出你的意图。- 提问:生成的代码跑起来有 bug,怎么通过改 Prompt 来修而不是自己手动改?
- 回答:把 bug 现象描述清楚喂回去。比如”你生成的代码在确认密码字段校验时有问题,当密码字段清空后再填确认密码,校验不会触发。请修复这个问题,确保密码字段变化时会重新校验确认密码字段”。本质上就是把你 debug 的思路用自然语言写出来。如果 bug 很隐蔽,可以把出问题的代码段贴回去,让 AI 重点看那一块。- 提问:React Hook Form 和 Formik 你更推荐哪个?为什么?
- 回答:现在新项目肯定选 React Hook Form。性能上,React Hook Form 是非受控组件,重渲染次数少很多,官方 benchmark 显示能快 2-3 倍。体积上,React Hook Form 压缩后 8KB,Formik 要 12KB。API 上,React Hook Form 的 register 比 Formik 的 Field 组件更简洁。唯一 Formik 还有点优势的是社区资料多一些,毕竟出来得早,但 React Hook Form 现在文档也很完善了,上手不难。
为什么用 React Hook Form 而不是受控组件验证库选型对比写 Prompt 容易忽略的坑分步生成 vs 一次性生成
提问:表单字段多了以后 Prompt 会很长,怎么组织才能让 AI 不漏东西?提问:如果验证逻辑很复杂,比如字段之间有联动关系,Prompt 该怎么写?提问:生成的代码跑起来有 bug,怎么通过改 Prompt 来修而不是自己手动改?提问:React Hook Form 和 Formik 你更推荐哪个?为什么?热门面试题目榜更多说说 Java 中 HashMap 的原理?9130Java 中的序列化和反序列化是什么?6255MySQL 索引的最左前缀匹配原则是什么?5662Java 中 ConcurrentHashMap 1.7 和 1.8 之间有哪些区别?5067Java 中有哪些集合类?请简单介绍4854MySQL 的索引类型有哪些?4845详细描述一条 SQL 语句在 MySQL 中的执行过程。4218什么是 RAG?RAG 的主要流程是什么?4151MySQL 的存储引擎有哪些?它们之间有什么区别?4092数据库的脏读、不可重复读和幻读分别是什么?3900推荐教程更多AI 超级智能体亿级流量点赞系统教程智能协同云图库项目教程预览用户交流一起刷题学习、求职交流、反馈建议、获取更新通知面试鸭《用户协议》《隐私政策》友情链接编程导航老鱼简历代码小抄剪切助手联系我们商务合作站长:程序员鱼皮关注我们扫码关注面试鸭公众号
来源: 假设需要让大模型生成一个React表单组件代码,请设计一个包含上下文约束的Prompt(需包含数据验证、错误提示等要求).mhtml
假设需要让大模型生成一个React表单组件代码,请设计一个包含上下文约束的Prompt(需包含数据验证、错误提示等要求)VIP中等大模型标记分享31022面试问答让大模型生成一个能直接用的 React 表单组件,Prompt 得把上下文约束写死,不然 AI 就会按自己的理解乱发挥。
-
- 一个完整的 Prompt 应该覆盖四个维度:字段定义、验证规则、交互行为、代码规范。
-
- 直接上一个实战级的 Prompt 示例:▼plaintext复制代码用 React 18 + TypeScript + React Hook Form 写一个用户注册表单组件。
-
本文已做格式统一与噪声清理,保留原始语义。
-
假设需要让大模型生成一个React表单组件代码,请设计一个包含上下文约束的Prompt(需包含数据验证、错误提示等要求)
-
- 假设需要让大模型生成一个React表单组件代码,请设计一个包含上下文约束的Prompt(需包含数据验证、错误提示等要求)VIP中等大模型标记分享31022面试问答让大模型生成一个能直接用的 React 表单组件,Prompt 得把上下文约束写死,不然 AI 就会按自己的理解乱发挥。一个完整的 Prompt 应该覆盖四个维度:字段定义、验证规则、交互行为、代码规范。直接上一个实战级的 Prompt 示例:▼plaintext复制代码用 React 18 + TypeScript + React Hook Form 写一个用户注册表单组件。
-
- 用户名:必填,2-10 个字符,只能包含字母数字下划线
-
- 邮箱:必填,标准邮箱格式
-
- 密码:必填,8-20 位,至少包含一个大写、一个小写、一个数字
-
本文已做格式统一与噪声清理,保留原始语义。
Share Article
If this article helped you, please share it with others!