当一个组件输入的props变更时,如果此时想及时进行操作,那么有什么好办法吗?
    即:react hooks中, useEffect的依赖为引用类型如何处理?

    如果是引用类型,即使每次的内容JSON.stringfy后一致,但是每次会创建新的对象或者数组等引用类型,很有可能会引起无限触发。

    据我所知没有好办法,只有在props中传入JSON.stringfy后的字符串或者使用这个库use-deep-compare-effect深度对比。

    1. import React, { useEffect, useRef, useState } from 'react'
    2. import useDeepCompareEffect from 'use-deep-compare-effect'
    3. const ClickCount = () => {
    4. const [count, setCount] = useState(0)
    5. const [obj, setObj] = useState({a: 1})
    6. useDeepCompareEffect(() => {
    7. console.log('excuted')
    8. }, [obj])
    9. return (
    10. <div>
    11. {count}
    12. <button onClick={() => {setObj({a: 2})}}>click</button>
    13. </div>
    14. )
    15. }
    16. export default ClickCount

    参考文章

    https://www.yuque.com/liulinboyi/simpread/1654170935160