React中如何正确监听全局快捷键而不触发多次?
我在用React做编辑器功能,想用Ctrl+S保存,但每次按键都会触发好几次保存请求,试过在useEffect里加事件监听,也用了removeEventListener清理,但还是不行。
是不是我的写法有问题?下面是我的代码:
useEffect(() => {
const handleSave = (e) => {
if (e.ctrlKey && e.key === 's') {
e.preventDefault();
saveContent();
}
};
window.addEventListener('keydown', handleSave);
return () => window.removeEventListener('keydown', handleSave);
}, []);
这样可以确保saveContent不会在上一次调用完成之前再次被调用。希望这能解决你的问题。