Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在reactjs组件中动态生成属性';s州_Javascript_Forms_Reactjs_React Jsx - Fatal编程技术网

Javascript 在reactjs组件中动态生成属性';s州

Javascript 在reactjs组件中动态生成属性';s州,javascript,forms,reactjs,react-jsx,Javascript,Forms,Reactjs,React Jsx,我有一个非常大的表单,我希望有一个状态来保存用户的所有输入数据,以表单命名的不同属性 让我们假设我有一个表格,上面有姓名、年龄和电子邮件。我希望所有这些都保存在名为value的状态中。因此,一旦填完表格,我就会有this.state.value[name],this.state.value[age]和this.state.value[email] 然而,这不起作用,当我试图存储表单的输入数据时,我得到了一个错误 以下是handleChange()的代码: 那么,如何将表单中的值存储在state属

我有一个非常大的表单,我希望有一个状态来保存用户的所有输入数据,以表单命名的不同属性

让我们假设我有一个表格,上面有姓名、年龄和电子邮件。我希望所有这些都保存在名为value的状态中。因此,一旦填完表格,我就会有
this.state.value[name]
this.state.value[age]
this.state.value[email]

然而,这不起作用,当我试图存储表单的输入数据时,我得到了一个错误

以下是handleChange()的代码:

那么,如何将表单中的值存储在state属性下呢


谢谢

如果你这样做会怎么样:

const value = Object.assign({}, this.state.value)
value[e.target.name] = e.target.value
this.setState({ value })

如果你这样做会怎么样:

const value = Object.assign({}, this.state.value)
value[e.target.name] = e.target.value
this.setState({ value })

值[e.target.name]
不是有效的键。您尝试的是执行states
value
属性的更新,我建议您执行类似的操作

在这种情况下,您的更新如下所示:

this.setState({value:update(this.state.value,{[e.target.name]:{$set:e.target.value})})


请注意,使用创建另一个答案(+1)中发布的副本将实现同样的效果,在这种情况下是完全合理的。但是,对于更复杂的更新,不变性帮助器是一个有用的工具。

value[e.target.name]
不是有效的密钥。您尝试的是执行states
value
属性的更新,我建议您执行类似的操作

在这种情况下,您的更新如下所示:

this.setState({value:update(this.state.value,{[e.target.name]:{$set:e.target.value})})


请注意,使用创建另一个答案中发布的副本(+1)将实现同样的效果,并且在这种情况下是完全合理的。然而,不变性帮助器对于更复杂的更新来说是一个有用的工具。

首先,我想指出的是,该方法中没有定义
值,这可能是导致错误的原因(您从未指定确切的错误)

您通常会在更新值时存储这些值

this.setState({name:e.target.value})/>


然后,在提交表单时,您将有权访问state对象中的所有值。

首先,我想指出,
value
没有在该方法中定义,这可能是您得到错误的原因(您从未指定确切的错误)

您通常会在更新值时存储这些值

this.setState({name:e.target.value})/>


然后,在提交表单时,您将可以访问state对象中的所有值。

我认为op知道如何执行此操作(请参阅问题的此部分),并且询问如何将它们作为键存储在同一对象中,而不是根状态。我认为op知道如何执行此操作(请参阅问题的此部分)并询问如何将它们作为键存储在同一对象中,而不是根状态。非常有效!谢谢!非常有效!谢谢!