可以调用ahoks 里面的 useKeyPress
例子:
useKeyPress(["backspace", "delete"], () => {
myFunc()
});
// delete
useKeyPress(["backspace", "delete"], () => {
if (!isActiveElementValid()) {
return;
}
dispatch(deleteComponent());
});
// copy
useKeyPress(["ctrl.c", "meta.c"], () => { // meta is for Mac users
if (!isActiveElementValid()) {
return;
}
dispatch(copyComponent());
});
// paste
useKeyPress(["ctrl.v", "meta.v"], () => { // meta is for Mac users
if (!isActiveElementValid()) {
return;
}
dispatch(pasteComponent());
});
但是如果页面里面有输入框,这个时候点击这些删除键,也会导致选中的组件被删除,怎么办呢?
可以根据 document.activeElement来判断当前选中的是什么类型的组件
比如:
在我的项目中,定义了 isActiveElementValid()函数
function isActiveElementValid() {
const activeElement = document.activeElement;
if (activeElement === document.body) {
return true;
}
return false;
}
便可以来判断是否选中的为body
在input组件中删除内容的时候便不会把组件给删除了。
Comments
Post a Comment