/
suhushinas
/
renderless-components-examples
Обзор
Документация
Войти
/
suhushinas
/
renderless-components-examples
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/modules/common/components/KeyHandler.jsx
40 строк
876 B
SuhushinAS
fix
12 апр 2019, 05:26
12 апр 2019, 05:26
2cb329a
Код
Авторство
О чём код?
import React from 'react'; class KeyHandler extends React.Component { handlerAdd = (eventName) => { document.addEventListener(eventName, this.handler); }; handlerRemove = (eventName) => { document.removeEventListener(eventName, this.handler); }; handler = (e) => { const {keyList} = this.props; if (keyList[e.type]) { if (keyList[e.type][e.keyCode]) { keyList[e.type][e.keyCode](e); } } }; render() { return null; } componentDidMount() { Object.keys(this.props.keyList).forEach(this.handlerAdd); } shouldComponentUpdate(props) { Object.keys(this.props.keyList).forEach(this.handlerRemove); Object.keys(props.keyList).forEach(this.handlerAdd); return false; } componentWillUnmount() { Object.keys(this.props.keyList).forEach(this.handlerRemove); } } export default KeyHandler;