对个人主页设计和实现感兴趣的朋友可以订阅我的专栏哦!!谢谢大家!!!
在现代网页中,一个精致的 Contact 区域不仅仅是表单的堆砌,更是用户与我们建立联系的第一印象。
在本节课中,我们构建了一个响应式、高颜值的联系表单,同时融入动画加载反馈与背景图层,提升整体体验感。
✨ 实现亮点
- 通过插入
/assets/terminal.png
作为背景图,形成了极具黑客风格的氛围 - 使用
useState
管理name
、email
与message
字段 - 通过
useRef
获取 form DOM,并模拟一个加载状态 - 实现了统一风格的输入框、按钮
📝 核心代码拆解
const [form, setForm] = useState({ name: '', email: '', message: '' });const handleChange = ({ target: { name, value } }) => {setForm({ ...form, [name]: value });
};
通过简洁的 handleChange
函数,自动绑定 input 的 name
字段和当前值,实现了通用型双向数据绑定。
<form ref={formRef} onSubmit={handleSubmit}>{/* 表单字段 */}<button disabled={loading}>{loading ? 'Sending...' : 'Send Message'}</button>
</form>
表单提交后通过 setLoading(true)
控制按钮状态,并在 2 秒后恢复,同时重置表单。
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
我们将在下一节中:
🌟 完成个人主页项目的最后一节,页脚部分。