javascript - 如何从动态创建的文本字段中收集值?
问题描述
我正在构建一个反应应用程序,并根据一组不断变化的变量为输入动态构建文本字段。我如何收集每个字段的值输入,因为它不是硬编码的?
const [elementVariables, setElementVariables] = useState([]);
const [dataCollect, setDataCollect] = useState([]);
const handleVariableChange = (e) => {
console.log('variable value: ', e.target.value)
setDataCollect(e.target.value);
}
<div>
<Divider />
{elementVariables.map((item) => (
<TextField
key={item}
label={item}
className={props.classes.textField}
value={dataCollect}
onChange={e => handleVariableChange(e)}
/>
))}
</div>
解决方案
我正在使用 map 提供的 index 参数执行此操作,但您也可以在 item 对象中使用具有唯一值的某些属性,即“id”属性。根据索引键更新答案以具有正确的 value 属性。
const [elementVariables, setElementVariables] = useState([]);
const [dataCollect, setDataCollect] = useState({}); //use an object.
const handleVariableChange = (e,index) => {
console.log('variable value: ', e.target.value)
setDataCollect((dataCollect)=>({...dataCollect,[index]:e.target.value}));
/* will result in an object with keys representing text fields
{0:'value 1',1:'value2'}
}
*/
<div>
<Divider />
{elementVariables.map((item,index) => (
<TextField
key={item}
label={item}
className={props.classes.textField}
value={dataCollect[index]?dataCollect[index]:''}
onChange={e => handleVariableChange(e,index)}
/>
))}
</div>
推荐阅读
- java - 如何在 Java 中获取 var/lib/rpm/packages
- angular - 使用 RXJS 有条件地向管道添加操作
- python - 值错误:在特定示例中解包的值太多
- python - matplotlib contourf 不一致的图
- javascript - 拖放或替换整个 div 容器。拖动弹出的 Modal
- python - Python Selenium 网络抓取与并发期货
- powerbi - 如何在 Azure 分析服务中结合推送数据(实时)和普通增量更新
- node.js - Bluebird Promises.map .then() :不工作
- amazon-web-services - BigQuery Transfer Service 不会从 S3 复制行
- powerbi - 计算两个分组平均值之间的差异?