Javascript React Typescript:can';t设置状态

Javascript React Typescript:can';t设置状态,javascript,reactjs,typescript,state,Javascript,Reactjs,Typescript,State,我有一个包含字符串的数组。我正试着用另一根弦把它连接起来。当我console.log('Dates:'+mergedActions)将两个字符串一起返回。但是,当Iconsole.log('Dates:'+this.state.MergedAllActions)为空时。我尝试在控制台日志中添加超时,但仍然没有 知道为什么mergedActions中没有设置包含信息的mergedActions let currentAction = 'Form has been submitted'; let m

我有一个包含字符串的数组。我正试着用另一根弦把它连接起来。当我
console.log('Dates:'+mergedActions)
将两个字符串一起返回。但是,当I
console.log('Dates:'+this.state.MergedAllActions)
为空时。我尝试在控制台日志中添加超时,但仍然没有

知道为什么
mergedActions
中没有设置包含信息的
mergedActions

let currentAction = 'Form has been submitted';
let mergedActions = this.state.Product[0].AllActions + ',' + currentAction;
this.setState({ MergedAllActions: mergedActions });
console.log('Dates: ' + mergedActions);  
console.log('Dates: ' + this.state.MergedAllActions);
控制台如下:

Dates: first Step,First Approver accepted
Dates:

 

setState是异步的,但它支持回调作为第二个参数。 改为

this.setState({ MergedAllActions: mergedActions }, console.log(this.state.MergedAllActions));

setState是异步的,但它支持回调作为第二个参数。 改为

this.setState({ MergedAllActions: mergedActions }, console.log(this.state.MergedAllActions));
,如文件所述:

setState()将组件状态的更改排入队列[…]
将setState()视为更新组件的请求,而不是即时命令。[…]
setState()并不总是立即更新组件。[…]这使得调用setState()后立即读取This.state成为一个潜在的陷阱。
相反,使用
componentdiddupdate
或setState回调(
setState(updater,callback)
),这两种回调都保证在应用更新后触发。

(我的重点。)

,如文档所述:

setState()将组件状态的更改排入队列[…]
将setState()视为更新组件的请求,而不是即时命令。[…]
setState()并不总是立即更新组件。[…]这使得调用setState()后立即读取This.state成为一个潜在的陷阱。
相反,使用
componentdiddupdate
或setState回调(
setState(updater,callback)
),这两种回调都保证在应用更新后触发。


(强调我的。)

嗨,谢谢你的回复,我还是个新手。因此,我在一个
submit
函数中执行此操作。在提交时,我正在进行此计算,然后将新的设置状态推送到我的
数组中
有什么想法吗?正如上面的文档片段所解释的,在调用
setState()
后,对您的状态的更改不会立即可用,因为
setState()
是异步的。下一次重新呈现组件时,它将反映在状态中。您好,谢谢您的回复,我还是个新手。因此,我在一个
submit
函数中执行此操作。在提交时,我正在进行此计算,然后将新的设置状态推送到我的
数组中
有什么想法吗?正如上面的文档片段所解释的,在调用
setState()
后,对您的状态的更改不会立即可用,因为
setState()
是异步的。下次重新渲染组件时,它将反映在状态中。