Javascript 为什么要这样分配变量?
我甚至不知道它的名字,因此它的名字 我基本上是通过加载通过道具传递的数据(用于编辑)或加载空结构(用于创建新条目)来初始化模态表单: 主要思想是在提交表单后再次使用this.defaultStruct重置表单 但是,当我在提交后执行console.log(this.defaultStruct)时,我可以看到它实际上已经填充了表单状态的数据。所以见鬼Javascript 为什么要这样分配变量?,javascript,reactjs,Javascript,Reactjs,我甚至不知道它的名字,因此它的名字 我基本上是通过加载通过道具传递的数据(用于编辑)或加载空结构(用于创建新条目)来初始化模态表单: 主要思想是在提交表单后再次使用this.defaultStruct重置表单 但是,当我在提交后执行console.log(this.defaultStruct)时,我可以看到它实际上已经填充了表单状态的数据。所以见鬼 handleSubmit(e){ if(e){e.preventDefault();} $.ajax({ url:
handleSubmit(e){
if(e){e.preventDefault();}
$.ajax({
url: this.state.question.id == null ? this.props.applicationData.routes.questionsCreate : this.props.applicationData.routes.questionsUpdate,
dataType: 'json',
contentType: 'application/json',
type: 'POST',
data: this.digestDataForStupidRails('question', 'options'),
success: function(data) {
console.log(this.defaultStruct)
}.bind(this),
error: function(xhr, status, err) {
}.bind(this)
});
}
控制台输出:
{
"question": {
"text": "preg 1",
"active": true,
"options": [
{
"text": "preg 1 a 1",
"correct": false,
"position": 0,
"_destroy": false
},
{
"text": "preg 1 a 2",
"correct": true,
"position": 1,
"_destroy": false
}
]
}
}
当然,我可以通过使用函数来解决这个问题,并使它每次返回一个空结构,但这让我好奇
有人能解释这种行为吗?这不是特定的反应,而是javascript(或基本上任何类似的语言)的工作方式。
defaultStruct
是一个对象,因此它通过引用传递,而不是作为新副本传递。如果您想保留getInitialState
,您应该找到一种方法,例如,根据喜欢的答案中的建议,或者使用已经具有此功能的库,或者类似的方法。或者,由于您已经在使用jquery,您可以使用$.extend
,正如第一个链接的第二个答案所回答的那样。这不是特定的反应,而是javascript(或基本上任何类似的语言)的工作方式。defaultStruct
是一个对象,因此它通过引用传递,而不是作为新副本传递。如果您想保留getInitialState
,您应该找到一种方法,例如,根据喜欢的答案中的建议,或者使用已经具有此功能的库,或者类似的方法。或者,由于您已经在使用jquery,您可以使用$.extend
,正如在第一个链接的第二个答案中所回答的那样。哦,现在我对javascript有了更多的了解,谢谢!哦,现在我对javascript有了更多的了解,谢谢!
{
"question": {
"text": "preg 1",
"active": true,
"options": [
{
"text": "preg 1 a 1",
"correct": false,
"position": 0,
"_destroy": false
},
{
"text": "preg 1 a 2",
"correct": true,
"position": 1,
"_destroy": false
}
]
}
}