componentDidUpdateの代わりにuseRefを使用できません

Nov 27 2020

エラー

Uncaught TypeError:Object(...)は関数ではありません

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

const mounted = useRef();

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

機能コンポーネントがあり、フックを利用してcomponentDidUpdateを使用しようとしています。onSubmit関数で、呼び出しとAPIへのディスパッチを起動し、reduxに保存されているそのAPIの結果のペイロードを確認する必要があります。しかし、上記のエラーが発生しますか?

Reactフックを使用してcomponentDidUpdateと同等のuseRefを使用するというこの回答を見つけました

回答

2 GlenCarpenter Nov 27 2020 at 15:53

を使用して参照にアクセスする必要がありますmounted.current。値を初期化していないため、が返されundefinedます。

参照をJSX要素に割り当てる場合、DOMが読み込まれるまでその要素にアクセスできません。その場合、useLayoutEffectDOMが読み込まれるまでフックは実行されないため、フックを使用することをお勧めします。

2 OrAssayag Nov 27 2020 at 15:52

useRefはReactフックです。への変更:

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