Ganchos
Jutro expone ganchos que puede usar en diferentes casos. Al usarlos, asegúrese de seguir las reglas oficiales para los ganchos de React.
Puede importar estos ganchos desde @jutro/platform, por ejemplo:
import { useCombinedRefs } from '@jutro/platform';
useAccessibleRef
Habilita la accesibilidad en los nodos DOM. Incluye el manejo del foco nativo y la reacción a los eventos del teclado “Intro” y “barra espaciadora” de la misma manera que a los clics del mouse.
Parámetros:
focused: Si estrue, el elemento está activo en el renderizado
Devuelve un React.MutableRefObject<T>, referencia de React que debe adjuntarse al nodo habilitado para a11y.
useCombinedRefs
Crea una sola referencia a partir de varias. Utilícelo si necesita tanto forwardRef como un componente ref para el mismo elemento.
Parámetros:
refs: Una matriz de referencias de React para combinar.
useControlled
Maneja el estado de los componentes controlados y no controlados.
Parámetros:
- Si se pasa un valor (componente controlado), no devuelve nada del gancho. La función
setStateno hace nada en ese caso. - Si no se pasa ningún valor (componente no controlado), funciona igual que
useStatey mantiene el estado interno del componente.
Devuelve la misma tupla que useState.
const [value, setValue] = useControlled({
value: valueProp,
defaultValue: null,
}); // controlled component
useDebounce
Devuelve un valor de funci ón debounce que refleja el valor más reciente para el período de tiempo especificado.
Parámetros:
value: El valor que se debe someter a debouncedelay: Período de tiempo que se debe esperar antes de actualizar el estado
Devuelve el valor de debounce.
const searchDebounced = useDebounce(search, 300);
useDeepEffect
Es un useEffect que compara en profundidad sus dependencias. Los elementos DOM, funciones, etc., todavía se comparan por identidad (consulte isEqual de lodash).
Parámetros:
effect: La función efecto.dependencies: Una matriz de dependencias. Son comparadas en profundidad.
useDeepEffect(() => {
if (!Array.isArray(value) && value) {
const { latitude, longitude, country } = value;
// This is triggered when any of the fields of "value" are changed
}
}, [value]);
useDeepMemo
Es un useMemo que compara en profundidad sus dependencias. Los elementos DOM, funciones, etc., todavía se comparan por identidad (consulte isEqual de lodash).
Parámetros:
factory: Una función de fábrica, exactamente igual que enuseMemo.- Dependencias
param: Una matriz de dependencias. Son comparadas en profundidad.
Devuelve el valor devuelto por la función de fábrica.
useDeepMemoize
Memoiza un valor para preservar su identidad en todos los rerenderizados. Se devuelve un nuevo valor solo si no es igual en profundidad al anterior. Los elementos DOM, funciones, etc. todavía se comparan por identidad (consulte isEqual de lodash).
Parámetros:
value: El valor que se memoizará.
Devuelve el valor memoizado.
useId
Devuelve un ID. Es útil en elementos DOM.
Parámetros:
Solo hay un parámetro, un objeto con los siguientes campos:
prefix: Un prefijo que se antepone al ID.default: Devuelve los valores predeterminados tal cual, sin ninguna generación adicional. El prefijo tiene prioridad sobre el predeterminado.
const id = useId({ default: idProp });
useIsMounted
Comprueba si el componente está montado. Durante la primera fase de renderizado (cuerpo de la función), no se monta.
Devuelve un React.RefObject<boolean> que indica si el componente está montado.
useKeyActive
Rastrea si una clave está activa.
Parámetros:
refal nodo, que debe servir como ámbito para el eventotargetKeys: Una matriz de strings que indica las teclas que se deben rastrear. De forma predeterminada, incluyeEnterySpace. Como referencia, consulte clave y código.
const isActiveKeyPressed = useKeyActive(refOne); // track Enter and space
const isActiveKeyPressed = useKeyActive(refTwo, ['Shift']); // track only Shift
useKeyPress
Permite un manejo más sencillo de los eventos de teclado.
Parámetros:
refal nodo, que debe servir como ámbito para el eventotargetKeys: Una matriz de strings que indica las teclas que se deben rastrear.callback: Devolución de llamada para manejar eventos de tecla presionada o sin presionar.
useKeyPress(ref, ['Space', 'Enter'], handleKey);
usePathname
Devuelve el history.location.pathname actual.
Estamos tratando de evitar useLocation porque cambia la clave incluso si la ruta es la misma, lo que provoca renderizaciones no deseadas.
Si solo le importan los cambios de ruta, este gancho se centra en ellos.
usePrevious
Obtiene el valor anterior de un objeto de propiedades o un objeto de estado pasado como parámetro (consulte ¿Cómo obtener las propiedades o el estado anteriores?).
Parámetros:
value: El valor actual que se almacenará para el próximo uso del gancho
Devuelve el valor anterior para el objeto de referencia pasado como param.