当一个组件输入的props变更时,如果此时想及时进行操作,那么有什么好办法吗?
即:react hooks中, useEffect的依赖为引用类型如何处理?
如果是引用类型,即使每次的内容
JSON.stringfy后一致,但是每次会创建新的对象或者数组等引用类型,很有可能会引起无限触发。
据我所知没有好办法,只有在props中传入JSON.stringfy后的字符串或者使用这个库use-deep-compare-effect
深度对比。
import React, { useEffect, useRef, useState } from 'react'
import useDeepCompareEffect from 'use-deep-compare-effect'
const ClickCount = () => {
const [count, setCount] = useState(0)
const [obj, setObj] = useState({a: 1})
useDeepCompareEffect(() => {
console.log('excuted')
}, [obj])
return (
<div>
{count}
<button onClick={() => {setObj({a: 2})}}>click</button>
</div>
)
}
export default ClickCount
参考文章