如何记住自定义React钩子

问题描述 投票:0回答:1
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它)。在其他情况下,请勿触摸。但是在这种情况下我还没有找到任何解决方法。您能帮我解决这个问题吗?

reactjs react-hooks memoization
1个回答
0
投票

您无法阻止调用钩子,这将导致不变的违规错误。每个组件中的钩子都应在每个渲染器上执行。仅当值更改时,才应依赖useEffect依赖项参数来运行条件代码。

© www.soinside.com 2019 - 2024. All rights reserved.