Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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 从状态中引用状态-React js_Javascript_Reactjs - Fatal编程技术网

Javascript 从状态中引用状态-React js

Javascript 从状态中引用状态-React js,javascript,reactjs,Javascript,Reactjs,是否可以从状态中引用状态来创建id。例如id=this.state.name+this.state.desc 像这样的 this.state = {name:'', desc:'', id:`${this.state.name}-${this.state.desc}`} 请记住,您需要使用setState设置状态 所以 这也是假设您已经在构造函数或应用程序中的其他地方设置了状态 如果您在构造函数中,那么这应该可以正常工作 this.state = { name: 'Toli', desc: '

是否可以从状态中引用状态来创建id。例如id=this.state.name+this.state.desc

像这样的

this.state = {name:'', desc:'', id:`${this.state.name}-${this.state.desc}`}

请记住,您需要使用setState设置状态

所以

这也是假设您已经在构造函数或应用程序中的其他地方设置了状态

如果您在构造函数中,那么这应该可以正常工作

this.state = { name: 'Toli', desc: 'A programmer' };
this.state = {...this.state, id:`${this.state.name}-${this.state.desc}`}

我假设您希望将name和desc保持在状态,因此我使用spread op复制它们…this.state

记住您需要使用setState设置状态

所以

这也是假设您已经在构造函数或应用程序中的其他地方设置了状态

如果您在构造函数中,那么这应该可以正常工作

this.state = { name: 'Toli', desc: 'A programmer' };
this.state = {...this.state, id:`${this.state.name}-${this.state.desc}`}
我假设您想将name和desc保留在状态中,所以我使用spread op复制它们…this.state

不,这不起作用。this.state是在构造函数之前初始化的,但它不像是引用对象的未定义部分。您需要在初始化之后设置它。我假设您将使用构造函数中的this.state={blah}。否则,应使用此.setState

但是,这也是一种不好的做法,因为无论何时更新名称或描述,它都会使用新的id值再次更新状态。我不知道代码的完整范围,但您可能只需将id保存到一个函数中,该函数将为您提供字符串。

不,这不起作用。this.state是在构造函数之前初始化的,但它不像是引用对象的未定义部分。您需要在初始化之后设置它。我假设您将使用构造函数中的this.state={blah}。否则,应使用此.setState


但是,这也是一种不好的做法,因为无论何时更新名称或描述,它都会使用新的id值再次更新状态。我不知道代码的全部范围,但您可以将id保存到一个函数中,该函数将为您提供字符串。

尝试时会发生什么情况?取决于您在哪里执行此操作。若在类主体内,您将收到一个错误。我认为您不能,因为状态尚未初始化。但是您知道从哪里获取这些值,所以您可以在状态更新时简单地设置id。我认为如果您在构造函数中编写多个赋值是可能的,但我不会这样做。这感觉像是一种反模式,但不知道整个上下文idk在此建议什么。这感觉更像是一个代码审查问题,而不是当你尝试它时会发生什么?取决于你在哪里做。若在类主体内,您将收到一个错误。我认为您不能,因为状态尚未初始化。当你写多个赋值的时候,我想你可以把它设置成多个赋值,但是如果你能把它设置成EDI的话。这感觉像是一种反模式,但不知道整个上下文idk在此建议什么。这也让人觉得更像是一个代码审查问题,而不是SEyou可以而且应该在constructor@worc-但是如果OP试图使用this.state={…}并在其中引用this.state,那么他们显然没有在构造函数中这样做,因为之前已经定义了状态。我认为这就是重点。他正试图在构造函数中执行此操作。您可能有多行。state=。。。然后我想你可以按照他们的要求去做。但是,它不是很习惯用法。您可以而且应该在constructor@worc-但是如果OP试图使用this.state={…}并在其中引用this.state,那么他们显然没有在构造函数中这样做,因为之前已经定义了状态。我认为这就是重点。他正试图在构造函数中执行此操作。您可能有多行。state=。。。然后我想你可以按照他们的要求去做。但这不是很地道。