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

我们将在下一节中:

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

相关推荐
雨汨3 分钟前
web:InfiniteScroll 无限滚动
前端·javascript·vue.js
小盐巴小严26 分钟前
正则表达式
javascript·正则表达式
明月看潮生33 分钟前
青少年编程与数学 02-019 Rust 编程基础 08课题、字面量、运算符和表达式
开发语言·青少年编程·rust·编程与数学
天天打码1 小时前
Rspack:字节跳动自研 Web 构建工具-基于 Rust打造高性能前端工具链
开发语言·前端·javascript·rust·开源
Petrichorzncu1 小时前
Lua再学习
开发语言·学习·lua
AA-代码批发V哥1 小时前
正则表达式: 从基础到进阶的语法指南
java·开发语言·javascript·python·正则表达式
字节高级特工1 小时前
【C++】”如虎添翼“:模板初阶
java·c语言·前端·javascript·c++·学习·算法
小冻梨!!!2 小时前
Spark,在shell中运行RDD程序
大数据·javascript·spark
炯哈哈2 小时前
【上位机——MFC】序列化机制
开发语言·c++·mfc·上位机
蓝莓味柯基2 小时前
Python3正则表达式:字符串魔法师的指南[特殊字符]‍♂️
开发语言·python·正则表达式