【发布时间】:2020-12-28 13:51:22
【问题描述】:
我有一个使用async await() 做一些动画的函数。 我想播放/暂停动画onClick。我使用useState 来更新变量,但函数的行为不符合我的要求。 const print () 正在运行并且当我单击按钮时,文本会更新,但该功能不会中断。在日志中,“play”被打印了 100 次。我猜useState 和async 造成了一些问题。我该如何解决这个问题?
const Test= props => {
const [ButtonText, SetButtonText] = useState("Play");
const ToggleButtonText = () => {
if(ButtonText == "Play")
SetButtonText("Pause")
if(ButtonText == "Pause")
SetButtonText("Play")
}
const delay = ms => new Promise(res => setTimeout(res, ms));
const print= () => {
for(var i = 0; i < 100; i++)
{
///
work
await delay(1000);
work
///
console.log(ButtonText);
if(ButtonText == "Pause")
break ;
}
};
return (
<div>
<div>
///work component///
</div>
<button onClick = {() => ToggleButtonText()}> {ButtonText}</button>
</div>
)
}
【问题讨论】:
标签: javascript reactjs asynchronous async-await