ไม่สามารถใช้ useRef แทน componentDidUpdate

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)

ฉันมีส่วนประกอบที่ใช้งานได้และพยายามใช้ประโยชน์จาก hooks เพื่อใช้ componentDidUpdate ในฟังก์ชั่น onSubmit ของฉันฉันเริ่มการจัดส่งเพื่อโทรและ API และฉันต้องการดูว่าเปย์โหลดที่เป็นผลลัพธ์ของ API นั้นคืออะไรซึ่งถูกเก็บไว้ใน redux แต่ฉันได้รับข้อผิดพลาดข้างต้น?

ฉันพบคำตอบนี้ซึ่งบอกว่าใช้ useRef เทียบเท่ากับ componentDidUpdate โดยใช้ React hooks

คำตอบ

2 GlenCarpenter Nov 27 2020 at 15:53

mounted.currentคุณควรเข้าถึงเตะของคุณโดยใช้ undefinedเนื่องจากคุณไม่ได้เริ่มต้นมันคุ้มค่าก็จะกลับ

หากคุณกำหนด ref ให้กับองค์ประกอบ JSX คุณจะไม่สามารถเข้าถึงได้จนกว่า DOM จะโหลด ในกรณีนั้นฉันขอแนะนำให้ใช้useLayoutEffecthook เนื่องจากจะไม่ทำงานจนกว่า DOM จะโหลด

2 OrAssayag Nov 27 2020 at 15:52

useRef เป็น React hook เปลี่ยนไป:

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