reactjs - 用 JSON 反应表单问题
问题描述
我有一个格式像这样的字段的表单
<Form.Field>
<input
type="text"
name="firstname"
placeholder="First Name"
value= { this.state.user.firstname }
onChange= { this.onChange }
/>
</Form.Field>
这工作正常。我的 onChange 事件完美地管理了这一点。
state = {
user: {
firstname: "",
lastname: ""
}
}
onChange = e => {
this.setState({
user: { ...this.state.user, [e.target.name]: e.target.value }
});
}
最初,我试图让我的 JSON 对象从我的 API 返回,并在名称周围嵌套层次结构。
state = {
user: {
name: {
firstname: "",
lastname: ""
}
}
}
但是当它是这样的时候,我的 onChange 对象将变量添加到我的状态中,而不是管理现有的;即使事件触发,我也不会更改 UI 上的值。我试图通过操纵 form.field 的名称以匹配 JSON 来导航 JSON 层次结构,但这不起作用:
<Form.Field>
<input
type="text"
name="name.firstname"
placeholder="First Name"
value= { this.state.user.name.firstname }
onChange= { this.onChange }
/>
</Form.Field>
我错过了什么?
解决方案
您的假设很好,您无法使用以下语法导航您的 JSON 对象:{ [e.target.name]: e.target.value }
最简单的解决方案是使用onChange
专门修改您的name
子对象的不同功能。
如果您仍然想要一个函数,应该可以解析e.target.name
值并将字符串拆分为.
字符,但这对我来说听起来很奇怪。
推荐阅读
- c# - 如何从服务中杀死包含多个后台服务的 Windows 服务
- php - 使用 php SDK 3 在 S3 中标记对象时遇到问题
- python - 在 Python 代码中捕获/捕获错误。InteractiveConsole
- c# - 如何忽略碰撞但在unity2D中引发触发事件
- python - 有没有办法使用 pandas 数据框来分割时间
- r - 将图像位置设置在闪亮仪表板标题的最左侧,并将文本设置在闪亮仪表板标题的中间
- tomcat - 不要在 Kubernetes 的入口级别终止 SSL
- android-studio - CallBack on Room 不应该删除此代码中的所有数据库吗?
- python - 如何获得执行我的程序的时间?
- variables - newman CLI '--export-collection' 不输出更新的集合变量