<span
key="next"
aria-label={"Next"}
// ref={NextPageButtonRef}
onClick={changeHandler(!hasNext, page + 1)}
onKeyDown={(e) => {
if (e.key === "Enter") {
changeHandler(!hasNext, page + 1);
}
}
tabIndex={0}
>
<span>Next</span>
</span>
const changeHandler = useCallback(
(exitEarly: boolean, target: number) => () => {
if (target === page || exitEarly) {
return;
}
onPageChange(clamp(target, 1, count as number));
},
[onPageChange, page, count]
);
实际上,我希望在按Enter键时调用“changeHandler
当我像这样直接调用它时它就工作了onKeyDown = {changeHandler(!hasNext, page + 1)}
但我希望它只在按Enter键时调用
1条答案
按热度按时间bgibtngc1#
useCallback
有一个返回函数的函数,所以当在onKeyDown
处理程序中调用changeHandler
时,它不会执行执行检查和触发onPageChange
的函数您可以通过删除额外的函数来解决此问题
那么
onClick
需要有一个匿名函数,因为changeHandler
不再返回它将立即调用的函数。