不能使用 useRef 作为 componentDidUpdate 替换

IT技术 javascript reactjs react-hooks
2021-05-16 01:04:20

错误

未捕获的类型错误:Object(...) 不是函数

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

const mounted = useRef();

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

我有一个功能组件并试图利用钩子来使用 componentDidUpdate,在我的 onSubmit 函数中,我触发了一个调用和 API 的调度,我需要查看该 API 的结果负载是什么,它存储在 redux 中。但是我得到了上面的错误?

我发现这个答案说使用 useRef Equivalent to componentDidUpdate using React hooks

2个回答

useRef 是一个 React 钩子。改成:

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

您应该使用mounted.current. 由于您没有将其初始化为值,因此它将返回undefined.

如果您将 ref 分配给 JSX 元素,则在 DOM 加载之前您将无法访问它。在这种情况下,我建议使用useLayoutEffect钩子,因为它在 DOM 加载之前不会运行。