Creating a custom hook for handling keyboard shortcuts in a Next.js application involves using React's useEffect
and useCallback
hooks to manage event listeners for key presses. Here's a simple example:
jsx// hooks/useKeyboardShortcut.js
import { useEffect, useCallback } from 'react';
const useKeyboardShortcut = (targetKey, callback) => {
const handleKeyDown = useCallback(
(event) => {
if (event.key === targetKey) {
callback();
}
},
[targetKey, callback]
);
useEffect(() => {
window.addEventListener('keydown', handleKeyDown);
return () => {
window.removeEventListener('keydown', handleKeyDown);
};
}, [handleKeyDown]);
};
export default useKeyboardShortcut;
In this example:
useCallback
is used to memoize the handleKeyDown
function to prevent unnecessary re-renders.useEffect
is used to add the event listener when the component mounts and remove it when the component unmounts.Now, you can use this custom hook in your Next.js components:
jsx// pages/index.js
import React from 'react';
import useKeyboardShortcut from '../hooks/useKeyboardShortcut';
const HomePage = () => {
const handleShortcut = () => {
console.log('Shortcut triggered!');
// Your custom logic here
};
// Listen for the "s" key
useKeyboardShortcut('s', handleShortcut);
return (
<div>
<h1>Next.js Custom Hook for Keyboard Shortcuts</h1>
</div>
);
};
export default HomePage;
In this example, the useKeyboardShortcut
hook is imported and used in the HomePage
component. It listens for the "s" key and triggers the handleShortcut
function when the key is pressed. You can customize the target key and the callback function according to your requirements.