Three.js + React 实战系列 - 联系方式提交表单区域 Contact 组件✨(表单绑定 + 表单验证)

对个人主页设计和实现感兴趣的朋友可以订阅我的专栏哦!!谢谢大家!!!

在现代网页中,一个精致的 Contact 区域不仅仅是表单的堆砌,更是用户与我们建立联系的第一印象。

在本节课中,我们构建了一个响应式、高颜值的联系表单,同时融入动画加载反馈与背景图层,提升整体体验感。

✨ 实现亮点

  • 通过插入 /assets/terminal.png 作为背景图,形成了极具黑客风格的氛围
  • 使用 useState 管理 nameemailmessage 字段
  • 通过 useRef 获取 form DOM,并模拟一个加载状态
  • 实现了统一风格的输入框、按钮

📝 核心代码拆解

js 复制代码
const [form, setForm] = useState({ name: '', email: '', message: '' });

const handleChange = ({ target: { name, value } }) => {
  setForm({ ...form, [name]: value });
};

通过简洁的 handleChange 函数,自动绑定 input 的 name 字段和当前值,实现了通用型双向数据绑定。

html 复制代码
<form ref={formRef} onSubmit={handleSubmit}>
  {/* 表单字段 */}
  <button disabled={loading}>{loading ? 'Sending...' : 'Send Message'}</button>
</form>

表单提交后通过 setLoading(true) 控制按钮状态,并在 2 秒后恢复,同时重置表单。

js 复制代码
setTimeout(() => {
  setLoading(false);
  formRef.current.reset();
  setForm({ name: '', email: '', message: '' });
}, 2000);

这一逻辑模拟了后端异步发送邮件后的回调处理,也为后续集成 emailJS、Node 服务端等提供了扩展空间。

🌍 响应式与动效体验

  • 🎨所有组件使用 flex, space-y-*, head-text 等样式类确保在不同设备下展示良好。
  • 📱提交按钮搭配箭头图标 /assets/arrow-up.png,视觉反馈更直观。
  • 💻 表单内容 hover 与 placeholder 文案也经过优化,更贴近真实应用场景。

📌 总结

Contact.jsx 组件是连接我们和用户的核心区域:

  • ✅熟练使用 state 管理当前展示内容
  • ✅深入理解表单绑定以及表单验证
  • ✅模拟邮件发送功能,方便后续集成

🔠 下一篇预告:页脚组件Footer.jsx

我们将在下一节中:

🌟 完成个人主页项目的最后一节,页脚部分。

相关推荐
Dontla20 分钟前
为什么React列表项需要key?(React key)(稳定的唯一标识key有助于React虚拟DOM优化重绘大型列表)
javascript·react.js·ecmascript
Wish3D21 分钟前
阿里云OSS 上传文件 Python版本
开发语言·python·阿里云
凤年徐22 分钟前
【数据结构初阶】单链表
c语言·开发语言·数据结构·c++·经验分享·笔记·链表
oioihoii24 分钟前
C++11 右值引用:从入门到精通
开发语言·c++
EndingCoder1 小时前
React从基础入门到高级实战:React 实战项目 - 项目三:实时聊天应用
前端·react.js·架构·前端框架
德育处主任Pro3 小时前
『React』Fragment的用法及简写形式
前端·javascript·react.js
CodeBlossom3 小时前
javaweb -html -CSS
前端·javascript·html
CodeCraft Studio3 小时前
【案例分享】如何借助JS UI组件库DHTMLX Suite构建高效物联网IIoT平台
javascript·物联网·ui
朝新_3 小时前
【多线程初阶】阻塞队列 & 生产者消费者模型
java·开发语言·javaee
立莹Sir3 小时前
Calendar类日期设置进位问题
java·开发语言