refactor: improves Performance & Code Readability

- Replaces useEffet with useMemo & useLayoutEffect where necessary.
- Converts some useEffects to separate hooks.
- Moves the functions defined within components to utils.
- Splits the Keywords renderPosition function to its own component.
This commit is contained in:
towfiqi
2024-01-13 10:10:49 +06:00
parent 2783de5c65
commit 4a47cedad8
18 changed files with 146 additions and 153 deletions

View File

@@ -1,5 +1,6 @@
import React, { useEffect } from 'react';
import React from 'react';
import Icon from './Icon';
import useOnKey from '../../hooks/useOnKey';
type ModalProps = {
children: React.ReactNode,
@@ -9,17 +10,7 @@ type ModalProps = {
}
const Modal = ({ children, width = '1/2', closeModal, title }:ModalProps) => {
useEffect(() => {
const closeModalonEsc = (event:KeyboardEvent) => {
if (event.key === 'Escape') {
closeModal();
}
};
window.addEventListener('keydown', closeModalonEsc, false);
return () => {
window.removeEventListener('keydown', closeModalonEsc, false);
};
}, [closeModal]);
useOnKey('Escape', closeModal);
const closeOnBGClick = (e:React.SyntheticEvent) => {
e.stopPropagation();