Nie można użyć useRef jako zamiennika componentDidUpdate

Nov 27 2020

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

2 GlenCarpenter Nov 27 2020 at 15:53

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 useLayoutEffecthaka, ponieważ nie będzie on działał, dopóki DOM nie zostanie załadowany.

2 OrAssayag Nov 27 2020 at 15:52

useRef jest punktem zaczepienia React. Zmień na:

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