Nie można użyć useRef jako zamiennika componentDidUpdate
Błąd
Uncaught TypeError: Object (...) nie jest funkcją
import { useSelector, useDispatch, useRef } from 'react-redux'
const mounted = useRef();
useEffect(() => {
console.log('mounted', mounted)
console.log('useEffect props:', props)
Mam komponent funkcjonalny i próbuję skorzystać z hooków, aby użyć componentDidUpdate, w mojej funkcji onSubmit uruchamiam wysyłkę do wywołania i API i muszę zobaczyć, jaki jest wynikowy ładunek tego API, który jest przechowywany w redux. Ale pojawia się powyższy błąd?
Znalazłem tę odpowiedź, która mówi, że używa useRef Equivalent do componentDidUpdate przy użyciu hooków React
Odpowiedzi
Powinieneś uzyskać dostęp do swojego ref używając mounted.current
. Ponieważ nie inicjujesz jej wartości, zwróci undefined
.
Jeśli przypisujesz referencję do elementu JSX, nie będziesz mieć do niego dostępu, dopóki DOM nie zostanie załadowany. W takim przypadku sugerowałbym użycie useLayoutEffect
haka, ponieważ nie będzie on działał, dopóki DOM nie zostanie załadowany.
useRef jest punktem zaczepienia React. Zmień na:
import React, { useRef } from 'react';
import { useSelector, useDispatch } from 'react-redux';