【发布时间】:2022-01-13 12:03:46
【问题描述】:
(在完成 React.js 教程之后,我目前正在编写我的第一个小应用程序以获得更多练习。所以这将是一个新手问题,答案肯定在某个地方,但显然我不知道搜索什么。)
Google 列出了很多关于如何为一个输入字段实现双向数据绑定的示例。但是对于大型复杂的表单,可能还有更多动态添加的选项呢?
假设我的表单由输入字段的水平线组成。所有行都相同:名字、姓氏、出生日期等。在表格的底部,有一个按钮可以插入一个新的这样的行。所有这些数据都存储在一个数组中。如何将每个输入字段绑定到其各自的数组元素,以便在用户编辑值时更新数组?
两行两列的工作示例:
import { useState} from 'react';
function App() {
var [name1, setName1] = useState('Alice');
var [score1, setScore1] = useState('100');
var [name2, setName2] = useState('Bob');
var [score2, setScore2] = useState('200');
function changeNameHandler1 (e) {
console.log(e)
setName1(e.target.value)
}
function changeScoreHandler1 (e) {
setScore1(e.target.value)
}
function changeNameHandler2 (e) {
setName2(e.target.value)
}
function changeScoreHandler2 (e) {
setScore2(e.target.value)
}
return (
<div>
<table>
<tbody>
<tr>
<td><input name="name1" id="id1" type="text" value={name1} onChange={changeNameHandler1} /></td>
<td><input name="score1" type="text" value={score1} onChange={changeScoreHandler1} /></td>
</tr>
<tr>
<td><input name="name2" type="text" value={name2} onChange={changeNameHandler2} /></td>
<td><input name="score2" type="text" value={score2} onChange={changeScoreHandler2} /></td>
</tr>
</tbody>
</table>
{name1} has a score of {score1}<br />
{name2} has a score of {score2}<br />
</div>
);
}
export default App;
如何在不必单独为数百个字段添加处理函数的情况下扩大规模?
【问题讨论】:
标签: reactjs forms data-binding