javascript - 如何遍历 React 中的新输入框渲染器并获取数组中的值?
问题描述
我需要动态生成带有单个输入框的多个 div,以便用户可以添加一个数字。
用户可以通过单击按钮添加任意数量的带有输入框的 div 以在其中输入数字。
用户输入数据后,必须点击一个按钮来处理数据。
我已经了解了如何使用 React 遍历现有数组,但不了解如何遍历用户动态创建的新 DOM 树,然后生成一个包含所有输入框内的值的数组。
处理后,将显示不同的值(最大值、最小值、平均值、方程返回结果等)
解决方案
如果没有看到您的代码,很难提供帮助,但您可能希望使用受控输入而不是不受控制的输入,因此您将拥有一个输入的当前值数组作为状态信息。
例如,在使用钩子的功能组件中:
const { useState } = React;
function Example() {
// The values we use on the inputs
const [values, setValues] = useState([]);
// Update the value at the given index
const updateValue = (value, index) => {
setValues(values =>
Object.assign([], values, {[index]: value})
);
};
// Add an input
const addInput = () => {
setValues(values => [...values, ""]);
};
// Get the sum (just an example; and one of the very few places I'll use `reduce`)
const sum = values.reduce((sum, value) => sum + Number(value), 0);
// Render as many inputs as we have values, along with the
// button to add an input and the sum
return (
<div>
<div>
{values.map((value, index) =>
<div key={index}>
<input type="text" value={value} onChange={evt => updateValue(evt.target.value, index)} />
</div>
)}
</div>
<div>Sum: {sum}</div>
<input type="button" value="Add Input" onClick={addInput} />
</div>
);
}
ReactDOM.render(<Example/>, document.getElementById("root"));
<div id="root"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.13.0/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.13.0/umd/react-dom.production.min.js"></script>
推荐阅读
- c# - 如何生成对方法参数的“表达式”引用
- python - Python脚本运行缓慢
- php - 将简短描述移动到 Woocommerce 单个产品页面中的选项卡中
- python - 尝试使用 launchd 运行 python 脚本时获取状态 78 launchctl
- java - 我可以将位于桌面或任何目录上的 MySQL 数据库文件 .ibd 连接到 java 吗?
- r - Julia 或 R:通过最少的非对角元素创建对称矩阵
- c++11 - 为什么包含 cpp 会产生不同的结果
- python - 康托尔集代码没有给出预期的输出
- android - 使用 Ionic 4 和 Capacitor 构建时创建的 APK 文件在哪里?
- javascript - Gulp:错误:未处理的“错误”事件。(1)当phpunit测试失败时