Không thể sử dụng useRef làm thay thế componentDidUpdate

Nov 27 2020

lỗi

Uncaught TypeError: Object (...) không phải là một hàm

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

const mounted = useRef();

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

Tôi có một thành phần chức năng và đang cố gắng tận dụng các hook để sử dụng componentDidUpdate, trong hàm onSubmit của tôi, tôi kích hoạt một công văn để gọi và API và tôi cần xem trọng tải kết quả của API đó, được lưu trữ trong redux. Nhưng tôi gặp lỗi trên?

Tôi đã tìm thấy câu trả lời này được cho là sử dụng useRef Tương đương với componentDidUpdate bằng cách sử dụng React hooks

Trả lời

2 GlenCarpenter Nov 27 2020 at 15:53

Bạn nên truy cập ref của bạn bằng cách sử dụng mounted.current. Vì bạn không khởi tạo nó một giá trị, nó sẽ trả về undefined.

Nếu bạn đang gán ref của mình cho một phần tử JSX, bạn sẽ không thể truy cập nó cho đến khi DOM tải xong. Trong trường hợp đó, tôi khuyên bạn nên sử dụng useLayoutEffecthook, vì nó sẽ không chạy cho đến khi DOM được tải.

2 OrAssayag Nov 27 2020 at 15:52

useRef là một React hook. Thay đổi thành:

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