gpt4 book ai didi

javascript - 如何修复 : Meteor Method fired twice with onClick or onKeyPress with React

转载 作者:行者123 更新时间:2023-11-29 23:21:31 26 4
gpt4 key购买 nike

始终选中:

你好,

我发现在我的数据库中 Meteor Method 已通过点击或按键执行了多次。

我没能触发错误。

这里是我的代码:

class Answering extends Component {
...

validAnswer() {
...

validAnswer.call({
...
});
}
...
render() {
return (
...
<div
id="Answering-button-next"
role="button"
onClick={() => { this.validAnswer(); }}
onKeyPress={(e) => { if (e.key === 'Enter') this.validAnswer(); }}
tabIndex="0"
>OK
</div>

如何修复这个错误?

谢谢

最佳答案

您应该能够将类属性用作本地类变量。使用它来检查当前请求是否正在处理。如果正在处理,则提前返回,以便不调用该方法。如果未处理,则将其切换为正在处理,并在服务器请求完成后在方法回调中将其设置回未处理。这将防止在回调运行之前发生重复(表明服务器方法响应成功)。

class Answering extends Component {
isProcessing: false,

validAnswer() {
if (this.isProcessing) return;
this.isProcessing = true;
validAnswer.call({}, () => {
this.isProcessing = false;
});
}

render() {
return (
<div
id="Answering-button-next"
role="button"
onClick={() => { this.validAnswer(); }}
onKeyPress={(e) => {
if (e.key === 'Enter') this.validAnswer();
}}
tabIndex="0"
>
OK
</div>
);
}
}

关于javascript - 如何修复 : Meteor Method fired twice with onClick or onKeyPress with React,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50435612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com