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
钩子,但我想阻止它。我只想在number
更改时调用它(memoize
它)。在其他情况下,请勿触摸。但是在这种情况下我还没有找到任何解决方法。您能帮我解决这个问题吗?
您无法阻止调用钩子,这将导致不变的违规错误。每个组件中的钩子都应在每个渲染器上执行。仅当值更改时,才应依赖useEffect
依赖项参数来运行条件代码。