在上一篇中,我们讨论了受控组件与非受控组件的概念。在本篇中,我们将深入探讨 React.js
中表单的基本使用,同时为后续的表单提交处理奠定基础。
表单的基本结构
在 HTML 中,表单通常包含各种输入元素,如文本框、复选框、单选按钮等。React 中的表单处理依然使用这些基本元素,但我们通过组件化的方式来管理相应的状态。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| function MyForm() { return ( <form> <label> 名字: <input type="text" /> </label> <br /> <label> 年龄: <input type="number" /> </label> <br /> <input type="submit" value="提交" /> </form> ); }
|
上面的代码展示了一个简单的表单结构,其中包含一个文本框用于输入名字,一个数字框用于输入年龄,以及一个提交按钮。
受控组件与非受控组件的进一步应用
在处理表单时,受控组件与非受控组件的区别非常重要。受控组件通过 React
的状态管理输入,而非受控组件则是依赖于 DOM。在这里,我们将集中讨论受控组件,它们能带来更好的数据管理和用户体验。
受控组件示例
我们将创建一个简单的受控组件表单,实现对用户输入的实时捕获和显示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| import React, { useState } from 'react';
function ControlledForm() { const [name, setName] = useState(''); const [age, setAge] = useState('');
const handleNameChange = (event) => { setName(event.target.value); };
const handleAgeChange = (event) => { setAge(event.target.value); };
return ( <form> <label> 名字: <input type="text" value={name} onChange={handleNameChange} /> </label> <br /> <label> 年龄: <input type="number" value={age} onChange={handleAgeChange} /> </label> <br /> <div> <h3>您输入的名字: {name}</h3> <h3>您输入的年龄: {age}</h3> </div> <input type="submit" value="提交" /> </form> ); }
|
在以上代码中,我们定义了两个状态 name
和 age
,并通过 onChange
事件处理来实时更新状态。当用户输入内容时,我们可以立即看到其在下方区域的反映。
表单验证
在表单中,验证用户输入是一个常见的需求。我们可以在提交时对输入进行验证。以下是一个简单的实现用户输入验证的例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| function ValidatedForm() { const [name, setName] = useState(''); const [age, setAge] = useState(''); const [error, setError] = useState('');
const handleSubmit = (event) => { event.preventDefault(); if (!name || !age) { setError('名字和年龄都是必填的!'); } else { setError(''); alert(`提交成功: ${name}, ${age}`); } };
return ( <form onSubmit={handleSubmit}> <label> 名字: <input type="text" value={name} onChange={(e) => setName(e.target.value)} /> </label> <br /> <label> 年龄: <input type="number" value={age} onChange={(e) => setAge(e.target.value)} /> </label> <br /> {error && <div style={{ color: 'red' }}>{error}</div>} <input type="submit" value="提交" /> </form> ); }
|
这个示例中,我们在表单提交时进行基本的验证,确保 名字
和 年龄
不为空。如果验证失败,则展示错误信息。
小结
在本篇中,我们介绍了 React.js
中表单的基本使用,包括受控组件的实现与用户输入验证。受控组件使我们能够轻松地获取和管理用户输入的数据,为后续的表单提交处理做好铺垫。
在下一篇文章中,我们将讨论表单提交的处理方法。在此之前,确保您对受控组件和表单的基本使用有清晰的理解,为后续学习做好准备。