javascript - 带有对象数组的 ReactNative useState
问题描述
我正在构建一个表单字段验证对象。我正在使用 useState 来跟踪表单上每个字段中的值以及用于验证的字段类型,即电子邮件、文本、密码。我可以用两个单独的钩子(一个用于值,一个用于状态)来做到这一点。我试图将它们放在一个对象中。这就是问题发生的地方。
字段名称是每个字段的键。该对象如下所示
fName : {
text: 'John',
colType: 'text'
}
lName : {
text: 'Doe',
colType: 'text'
}
hairColor : {
text: 'Brown'
colType: 'text'
birthDate : {
text: '02/02/2010'
colType: 'date'
如您所见,验证将基于字段的类型。此验证将在表单提交时发生。该组件将可用于所有表单。出于这个原因,我正在尝试使其具有通用性。
这是我试图用于 setter 函数的内容
setValues({...values,
[name] : {
text : [text],
colType : [colType]
}
});
我在解构此以获取文本和 colType 以根据 colType 验证文本时遇到问题。[name] 是要验证的对象的名称。
有任何想法吗?
解决方案
您正确使用了动态键[name]
。但是,您正在尝试使用一项、变量text
或colType
(text : [text]
意味着将一个对象的 Array 设置text
为父对象的字段)设置一个数组。
相反,它应该是:
setValues({...values,
[name] : {
text : text,
colType : colType
}
});
或者:
setValues({...values,
[name] : {
text,
colType
}
});
推荐阅读
- javascript - Allow spaces only at the start and end of the string in JavaScript
- neo4j - 多个 UNWIND 处理空列表
- python - 在 Flask 中渲染(许多)模板
- python - pandas 将 dict 嵌套不平衡 dict 转换为数据框
- apache-flink - Apache Flink 1.4.2 akka.actor.ActorNotFound
- docker - cp-kafka-connect 是开源组件还是专有组件?
- excel - 循环创建数据透视表和条形图
- amazon-ecs - AWS 在更新时更新任务映像标签
- javascript - 您如何将注册表单数据发布到服务器 URL。以及将用户重定向到不同的站点,例如感谢页面。使用 javascript 或 ajax
- r - 如何按ID合并表格,然后合并具有相同ID的单元格