Security News
RubyGems.org Adds New Maintainer Role
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
react-hotkeys-hook
Advanced tools
React hook for using keyboard shortcuts in components. This is a hook version for the [hotkeys] package.
The react-hotkeys-hook package is a React hook for handling keyboard shortcuts. It allows developers to easily add keyboard shortcuts to their React applications, making it easier to enhance user interactions and accessibility.
Basic Key Binding
This feature allows you to bind a specific key combination to a function. In this example, pressing 'Ctrl+K' will trigger an alert.
```jsx
import React from 'react';
import { useHotkeys } from 'react-hotkeys-hook';
const App = () => {
useHotkeys('ctrl+k', () => alert('Ctrl+K pressed!'));
return (
<div>
<h1>Press Ctrl+K</h1>
</div>
);
};
export default App;
```
Multiple Key Bindings
This feature allows you to bind multiple key combinations to a single function. In this example, pressing either 'Ctrl+K' or 'Ctrl+L' will trigger an alert.
```jsx
import React from 'react';
import { useHotkeys } from 'react-hotkeys-hook';
const App = () => {
useHotkeys('ctrl+k, ctrl+l', () => alert('Ctrl+K or Ctrl+L pressed!'));
return (
<div>
<h1>Press Ctrl+K or Ctrl+L</h1>
</div>
);
};
export default App;
```
Scoped Key Bindings
This feature allows you to bind key combinations within specific scopes. In this example, 'Ctrl+K' can be bound to different functions in different components or contexts.
```jsx
import React from 'react';
import { useHotkeys } from 'react-hotkeys-hook';
const App = () => {
useHotkeys('ctrl+k', () => alert('Ctrl+K pressed!'), { scopes: ['scope1'] });
return (
<div>
<h1>Press Ctrl+K</h1>
</div>
);
};
const AnotherComponent = () => {
useHotkeys('ctrl+k', () => alert('Ctrl+K pressed in another component!'), { scopes: ['scope2'] });
return (
<div>
<h1>Press Ctrl+K in Another Component</h1>
</div>
);
};
export default App;
```
react-hotkeys is a mature library for handling keyboard shortcuts in React applications. It provides a more comprehensive API for managing key events and supports nested hotkey scopes. Compared to react-hotkeys-hook, it offers more advanced features but may require more setup.
react-shortcuts is another library for handling keyboard shortcuts in React. It focuses on simplicity and ease of use, similar to react-hotkeys-hook. However, it may not offer as many advanced features or customization options as react-hotkeys-hook.
react-keyboard-event-handler is a lightweight library for handling keyboard events in React. It is easy to use and provides basic functionality for key bindings. It is similar to react-hotkeys-hook in terms of simplicity but may lack some of the more advanced features.
React hook for using keyboard shortcuts in components. This is a hook version for the hotkeys package.
https://johannesklauss.github.io/react-hotkeys-hook/
npm install react-hotkeys-hook
or
yarn add react-hotkeys-hook
Make sure that you have at least version 16.8 of react
and react-dom
installed, or otherwise hooks won't work for you.
export const ExampleComponent = () => {
const [count, setCount] = useState(0);
useHotkeys('ctrl+k', () => setCount(prevCount => prevCount + 1));
return (
<p>
Pressed {count} times.
</p>
);
};
The hook takes care of all the binding and unbinding for you. As soon as the component mounts into the DOM, the key stroke will be listened to. When the component unmounts it will stop listening.
useHotkeys(keys: string, callback: (event: KeyboardEvent, handler: HotkeysEvent) => void, options: Options = {}, deps: any[] = [])
The callback function takes the exact parameters as the callback function in the hotkeys package. See hotkeys documentation for more info or look into the typings file.
keys: string
: Here you can set the key strokes you want the hook to listen to. You can use single or multiple keys,
modifier combination, etc. See this
section on the hotkeys documentation for more info.callback: (event: KeyboardEvent, handler: HotkeysEvent) => void
: Gets executed when the defined keystroke
gets hit by the user. Important: Since version 1.5.0 this callback gets memoised inside the hook. So you don't have
to do this anymore by yourself.options: Options = {}
filter: (event: KeyboardEvent): boolean
is used to enable hotkeys inside input elements. Check out hotkeys docs for usage. Due to constraints with the base library, filter
is a global setting. As a result, it is currently not possible to have different filters for separate calls of useHotkey
.enableOnTags: string[]
is used to enable listening to hotkeys in form fields. Available values are INPUT
, TEXTAREA
and SELECT
. IMPORTANT! When you provide a custom filter
implementation function this parameter will be ignored. Similar to filter
, setting this option will enable it globally.splitKey: string
is used to change the splitting character inside the keys argument. Default is +
, but if you want
to listen to the +
character, you can set splitKey
to i.e. -
and listen for ctrl-+
keyup: boolean
Determine if you want to listen on the keyup eventkeydown: boolean
Determine if want to listen on the keydown eventdeps: any[] = []
: The dependency array that gets appended to the memoisation of the callback. Here you define the inner
dependencies of your callback. If for example your callback actions depend on a referentially unstable value or a value
that will change over time, you should add this value to your deps array. Since most of the time your callback won't
depend on any unstable callbacks or changing values over time you can leave this value alone since it will be set to an
empty array by default. See the Memoisation section to
learn more and see an example where you have to set this array.useIsHotkeyPressed
hookThe useIsHotkeyPressed
hook just returns the hotkeys.isPressed
function and works exactly the same.
const isPressed = useIsHotkeyPressed();
isPressed(13); // Returns true if Return key is pressed down.
Open up an issue or pull request and participate.
Checkout this repo, run yarn
or npm i
and then run the docz:dev
script.
You can use the docs/useHotkeys.mdx
to test the behavior of the hook. It directly imports the
src/index.ts
file and transpiles it automatically. So you don't have to worry about. For more info
on .mdx files, check out the docz documentation: https://www.docz.site/docs/writing-mdx
MIT License.
[2.2.1] - 23-Jul-2020
FAQs
React hook for handling keyboard shortcuts
The npm package react-hotkeys-hook receives a total of 0 weekly downloads. As such, react-hotkeys-hook popularity was classified as not popular.
We found that react-hotkeys-hook demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.
Security News
Research
Socket's threat research team has detected five malicious npm packages targeting Roblox developers, deploying malware to steal credentials and personal data.