javascript - 是否可以防止计时器结束?
问题描述
我试图在用户单击按钮时显示标签。我尝试使用 setTimeout 来实现这一点,但是当您在超时结束之前多次单击该按钮时,这将无法正常工作。
这就是我得到的:
const [cameraLabelVisible, setCameraLabelVisible] = useState(false);
let labelTimer;
function labelVisible() {
setCameraLabelVisible(true);
labelTimer = setTimeout(() => {
setCameraLabelVisible(false);
clearTimeout(labelTimer);
}, 1500);
}
};
我的问题是:是否可以通过在计时器结束前单击相同的按钮将计时器重置为初始值(在本例中为 1500)?
如果在时间用完之前多次单击按钮,我想显示标签。
解决方案
您可以先清除现有计时器:
const [cameraLabelVisible, setCameraLabelVisible] = useState(false);
let labelTimer;
function labelVisible() {
setCameraLabelVisible(true);
// clear the timer if there's another timer running
if(labelTimer) clearTimeout(labelTimer);
labelTimer = setTimeout(() => {
setCameraLabelVisible(false);
}, 1500);
}
推荐阅读
- javascript - 检查元素的值并采取行动
- java - Intelij Maven:错误:不再支持源选项 6。使用 7 或更高版本。还有解决方案吗?
- java - 减少 DTO 建模类中的样板代码(getter 和 setter)
- java - Gradlew 不工作(失败:生成异常。)
- c++ - 使用 QsciLexerCustom 突出显示 QScintilla 语法 - UTF-8 问题
- javascript - 从对象数组中的元素创建一个字符串
- r - “需要有限的 'ylim' 值”错误消息
- flutter - Flutter:如何使用 CustomPainter 创建生成动画
- azure - Azure Web App 在 docker-compose 中使用 WEBAPP_STORAGE_HOME 变量
- xaml - 如何根据其项目的大小更改 CollectionView 大小