design-system-govbr-rnp
Version:
## Padrão Digital de Governo - React Biblioteca de componentes React que implementa o [Padrão Visual digital do governo](https://www.gov.br/ds/). O objetivo da biblioteca é facilitar a implementação e promover a padronização das interfaces de sistemas do
35 lines (34 loc) • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useKeyPress = useKeyPress;
var _react = require("react");
function useKeyPress(eventName, handler) {
var element = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : window;
// Create a ref that stores handler
var savedHandler = (0, _react.useRef)();
// Atualize o valor ref.current se o manipulador for alterado.
// Isso permite que nosso efeito abaixo sempre obtenha o manipulador mais recente ...
// ...sem que precisemos passá-lo no array deps de efeito...
// ...e potencialmente causar efeito para reexecutar cada renderização.
(0, _react.useEffect)(function () {
savedHandler.current = handler;
}, [handler]);
(0, _react.useEffect)(function () {
// Verifique se o elemento suporta addEventListener
var isSupported = element && element.addEventListener;
if (!isSupported) return;
// Crie um ouvinte de eventos que chama a função de manipulador armazenada em ref
var eventListener = function eventListener(event) {
return savedHandler.current(event);
};
// Add event listener
element.addEventListener(eventName, eventListener);
// Remover event listener de cleanup
return function () {
element.removeEventListener(eventName, eventListener);
};
}, [eventName, element] // Execute novamente se eventName element changes atualizar
);
}