const useSomeHook = ({number}) => {
const [newNumber, setNewNumber] = useState(0)
useEffect(() => {
setNewNumber(number + 1)
}, [number])
}
const SomeComponent = ({number, value, ...restProps}) => {
useSomeHook({number})
return <div>{number}</div>
}
假设我有这样的情况。每次当SomeComponent
传入新的属性时,它都会调用我的useSomeHook
Hook,但我想要防止这种情况发生。我只想在number
改变时(memoize
它)才调用它。在其他情况下,请不要触碰它。但是我没有找到任何解决这个问题的方法。你能帮我解决这个问题吗?
useSomeHook
中的useEffect
钩子只有在依赖项number
改变时才会被调用。 - sdgluckuseEffect
的第二个参数中传递的内容将会触发后续调用你作为第一个参数传递的回调函数。 为了解决你的问题,你可以做两件事:1. 将深度相等性检查添加为第二个参数(这需要一些工作),和/或2. 在回调函数中添加条件;例如:if (obj.a !== obj.b) callback()
- AmiruseRef
替代useState
。 - Khaled Osman