# react-key-handler **Repository Path**: mirrors_stevemao/react-key-handler ## Basic Information - **Project Name**: react-key-handler - **Description**: React component to handle keyboard events :key: - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-26 - **Last Updated**: 2025-09-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # react-key-handler 🔑 [![npm version](https://img.shields.io/npm/v/react-key-handler.svg)](https://www.npmjs.com/package/react-key-handler) [![License](https://img.shields.io/npm/l/react-key-handler.svg)](https://www.npmjs.com/package/react-key-handler) [![Build Status](https://travis-ci.org/ayrton/react-key-handler.svg?branch=master)](https://travis-ci.org/ayrton/react-key-handler) React component to handle keyboard events (such as keyup, keydown & keypress). ## Testimonials >
“Happy to see that react-key-handler is SSR safe :+1:”
> [Veselin Todorov](https://github.com/vesln), Chai.js core ## Table of Contents 1. [Installation](#installation) 1. [Usage](#usage) 1. [Higher-order Components](#higher-order-components) 1. [Component](#component) 1. [Form key handling](#form-key-handling) 1. [Key event names](#key-event-names) 1. [`keyValue`, `keyCode`](#keyvalue-keycode) 1. [Development](#development) 1. [Contributing](#contributing) 1. [License](#license) ## Installation ```sh $ npm install react-key-handler --save ``` ## Usage You can use `react-key-handler` library in two flavours: - [higher-order components](#higher-order-components) - [component](#component) Unless you want absolute flexibility we recommend you to use a higher-order component in favour of the component. ### Higher-order Components This library includes two similar higher-order components, but with a different puprose: | Higher-order Component | Purpose | | ---------------------- | ------------------- | | `keyHandler` | Handles key changes | | `keyToggleHandler` | Handles key toggles | Both have the same API and will decorate the given component with a `keyValue` and `keyCode` property. Internally the `KeyHandler` component is used, for a full understanding be sure to check out [the implementation](lib/key-handler.js). ```jsx import React from 'react'; import {keyHandler, KEYPRESS} from 'react-key-handler'; function Demo({ keyValue }) { return (
{keyValue === 's' &&
  1. hello
  2. world
}
); } export default keyHandler({ keyEventName: KEYPRESS, keyValue: 's' })(Demo); ``` The prop types of the `KeyHandler` component are: | Name | Type | Required | Default | | | ------------ | -------- | ---------- | --------- | -------------------------------------- | | keyEventName | string | yes | `'keyup'` | `'keydown'`, `'keypress'` or `'keyup'` | | keyValue | string | yes __\*__ | | Any given [KeyboardEvent.key] | | keyCode | number | yes __\*__ | | Any given [KeyboardEvent.keyCode] | __\*__ You should pass only one of these two props: `keyValue` or `keyCode`. [Which one do I pick?](#keyvalue-keycode) [Examples](demo/components/examples/decorators/) ### Component ```jsx import React from 'react'; import KeyHandler, {KEYPRESS} from 'react-key-handler'; export default React.createClass({ getInitialState() { return { showMenu: false }; }, render() { const { showMenu } = this.state; return (
{showMenu &&
  1. hello
  2. world
}
); }, toggleMenu(event) { event.preventDefault(); this.setState({ showMenu: !this.state.showMenu }); }, }); ``` The prop types of the `KeyHandler` component are: | Name | Type | Required | Default | | | ------------ | -------- | ---------- | --------- | ------------------------------------------------ | | keyEventName | string | yes | `'keyup'` | `'keydown'`, `'keypress'` or `'keyup'` | | keyValue | string | yes __\*__ | | Any given [KeyboardEvent.key] | | keyCode | number | yes __\*__ | | Any given [KeyboardEvent.keyCode] | | onKeyHandle | function | yes | | Function that is called when they key is handled | __\*__ You should pass only one of these two props: `keyValue` or `keyCode`. [Which one do I pick?](#keyvalue-keycode) [Example](demo/components/examples/component/index.js) ### Form key handling This library does not handle key events for form elements such as `` and `