No se puede usar useRef como reemplazo de componentDidUpdate

Nov 27 2020

Error

Error de tipo no detectado: el objeto (...) no es una función

import { useSelector, useDispatch, useRef } from 'react-redux'

const mounted = useRef();

    useEffect(() => {
        console.log('mounted', mounted)
        console.log('useEffect props:', props)

Tengo un componente funcional y trato de aprovechar los ganchos para usar componentDidUpdate, en mi función onSubmit disparo un envío para llamar y API, y necesito ver cuál es la carga útil resultante de esa API, que se almacena en redux. ¿Pero aparece el error de arriba?

Encontré esta respuesta que decía usar useRef Equivalente a componentDidUpdate usando React hooks

Respuestas

2 GlenCarpenter Nov 27 2020 at 15:53

Debes acceder a tu referencia usando mounted.current. Como no está inicializando un valor, regresará undefined.

Si está asignando su referencia a un elemento JSX, no podrá acceder a él hasta que se haya cargado el DOM. En ese caso, sugeriría usar el useLayoutEffectgancho, ya que no se ejecutará hasta que se cargue el DOM.

2 OrAssayag Nov 27 2020 at 15:52

useRef es un gancho de React. Cambiar a:

import React, { useRef } from 'react';
import { useSelector, useDispatch } from 'react-redux';