我正在構建一個包含未知數量元素的carousel組件。我希望當用戶點擊相應的按鈕時,旋轉木馬向左或向右滾動。當屏幕右側不再有內容時,向右滾動按鈕應該會消失。
我的代碼在用戶點擊按鈕時運行良好。然而,當用戶使用tab鍵時,我的轉盤會自動滾動,但是我測量轉盤滑動距離的函數沒有檢測到這一點。
https://codesandbox.io/s/peaceful-rubin-nkgp5x?文件=/src/styles.module.scss
useEffect(() => {
let box = document.getElementById("musterOverviewDocumentChecklist");
console.log(box.getBoundingClientRect());
let width = box.offsetWidth;
setCanScrollLeft(-scrollDistance <= 0);
setCanScrollRight(
-scrollDistance >=
(documentCategories.documents.length + 1) * 210 - width
);
}, [documentCategories, scrollDistance]);
你的問題在這里看起來很簡單,這個函數應該完全禁止“tab”鍵執行,如果你在某些情況下仍然需要它,那么只需擴展if語句并使其阻止該鍵。如果滿足另一個條件,你也可以將其他鍵添加到“preventKeys”集合中。如果你需要阻止其他鍵運行,該函數可能看起來有點奇怪。 這是一個簡潔的javascript技巧,函數被立即調用,但也可以多次調用,它的工作原理是函數聲明在最后返回自身,所以當你調用' preventKeyPress '時,preventKeys會再次被調用
const preventKeyPress = (function preventKeys() {
const preventKeys = new Set(['Tab']);
addEventListener('keydown', event => {
if (preventKeys.has(event.key)) {
event.stopImmediatePropagation();
event.preventDefault();
}
});
return preventKeys;
})();
上一篇vue不更新模塊
下一篇setup視圖更新vue