表单验证与提交
表单验证
在 React 中,表单验证通常是基于组件的状态,通过 useState 记录输入值,并在提交时进行检查。
import { useState } from 'react';
function Form() {
const [name, setName] = useState('');
const [email, setEmail] = useState('');
const [error, setError] = useState('');
const handleSubmit = (e) => {
e.preventDefault();
// 基本验证:确保 name 和 email 都已填写
if (!name || !email) {
setError('请填写所有字段');
return;
}
// 提交表单逻辑
console.log('表单提交:', { name, email });
setError('');
};
return (
<form onSubmit={handleSubmit}>
<div>
<label>姓名</label>
<input
type="text"
value={name}
onChange={(e) => setName(e.target.value)}
/>
</div>
<div>
<label>邮箱</label>
<input
type="email"
value={email}
onChange={(e) => setEmail(e.target.value)}
/>
</div>
{error && <p style={{ color: 'red' }}>{error}</p>}
<button type="submit">提交</button>
</form>
);
}
`
常见验证类型
- 必填字段:确保用户填写了表单中的每个字段。
- 格式验证:例如检查电子邮件格式或电话号码格式。
- 密码强度:检查密码是否符合安全要求。
// 简单的邮箱格式验证
const isValidEmail = (email) => /\S+@\S+\.\S+/.test(email);
const handleSubmit = (e) => {
e.preventDefault();
if (!name || !email) {
setError('请填写所有字段');
return;
}
if (!isValidEmail(email)) {
setError('请输入有效的邮箱地址');
return;
}
console.log('表单提交:', { name, email });
setError('');
};
表单提交
表单提交时,通常需要通过 API 或其他方式进行处理。
import { useState } from 'react';
function SubmitForm() {
const [formData, setFormData] = useState({ name: '', email: '' });
const [loading, setLoading] = useState(false);
const [error, setError] = useState('');
const handleSubmit = async (e) => {
e.preventDefault();
setLoading(true);
// 模拟 API 请求
try {
const response = await fakeApiRequest(formData);
console.log('提交成功:', response);
setLoading(false);
} catch (err) {
setError('提交失败,请稍后再试');
setLoading(false);
}
};
const fakeApiRequest = (data) =>
new Promise((resolve, reject) => setTimeout(() => resolve(data), 1000));
return (
<form onSubmit={handleSubmit}>
<div>
<label>姓名</label>
<input
type="text"
value={formData.name}
onChange={(e) => setFormData({ ...formData, name: e.target.value })}
/>
</div>
<div>
<label>邮箱</label>
<input
type="email"
value={formData.email}
onChange={(e) => setFormData({ ...formData, email: e.target.value })}
/>
</div>
{error && <p style={{ color: 'red' }}>{error}</p>}
<button type="submit" disabled={loading}>
{loading ? '提交中...' : '提交'}
</button>
</form>
);
}
总结
在 React 中,表单验证是通过组件状态和事件处理实现的。可以进行简单的字段验证、格式检查以及异步提交处理。通过 useState 控制输入状态,并在表单提交时进行验证和提交处理,确保数据的有效性和安全性。
相关内容
- React 的设计理念:声明式 UI、组件化 React 的设计理念侧重于声明式 UI 和组件化。这种方式使得开发者能够更高效地构建可维护、可复用的用户界面。
- React 与其他前端框架的对比(Vue、Angular) React、Vue 和 Angular 都是流行的前端框架,它们各自有不同的设计理念和使用场景。React 强调组件化和虚拟 DOM,Vue 提供了更灵活的模板...
- React 是什么? React 是一个由 Facebook 开发的用于构建用户界面的 JavaScript 库。它通过组件化和声明式编程简化了复杂界面的开发,适用于构建交互丰富的单...
- useRef、useMemo、useCallback useRef、useMemo 和 useCallback 是 React 中常用的性能优化 Hooks,帮助管理引用、避免不必要的重新渲染和计算。
- 自定义 Hook 的创建与使用 自定义 Hook 是 React 中的一种机制,用于提取和复用组件逻辑。它可以将多个组件中共享的逻辑提取到独立的函数中,从而实现代码复用。
- Hook 规则与注意事项 在使用 React Hook 时,需要遵循一些规则和注意事项。了解这些规则可以帮助你避免常见的错误和性能问题,确保应用程序的稳定性和可维护性。