reactjs - React hooks 引用值对比

标签 reactjs react-hooks

各位! 想象一下,我有一个组件 SomeComponent。每次 'b' 值更改时,都会触发 useEffect,尽管 'b 不在其依赖项中

const SomeComponent = () => {
  const a = [1, 2, 3] //just an example of dependency. In real life it will be a changing value
  const b = useSelector(someValueSelector)

  useEffect(() => {
    //do some staff
  }, [a])
}

有没有办法在 SomeComponent 中存储对“a”数组的引用?我知道的唯一方法是创建一个包装器组件并传递

a = useMemo(() => [1, 2, 3], [])

作为 Prop

<SomeComponent a={a} />

最佳答案

这里的问题是每次重新渲染 a 的引用都会发生变化,因此 useEffect 会再次触发

您可以在 SomeComponent 中使用 useMemo 将内存值分配给 a

const SomeComponent = () => {
  const a = useMemo(() => [1, 2, 3], []); 
  const b = useSelector(someValueSelector)

  useEffect(() => {
    //do some staff
  }, [a])
}

关于reactjs - React hooks 引用值对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62005629/

相关文章:

reactjs - useState 函数在功能组件中不起作用

reactjs - 使用 React hooks 的后台服务

reactjs - 修改create-react-app的webpack.config.js

javascript - 将 Prop 传递给 map 中的温度文字

reactjs - 如何计算页面上已通过 redux 的 connect() 函数连接的组件数量?

javascript - 如何使用链式 promise 在 react componentDidMount 中测试异步获取?

javascript - $.get 中的 setState

javascript - React Hook新手,为什么使用一次后状态未定义?

reactjs - 带有依赖列表和 eslint-plugin-react-hooks 的自定义钩子(Hook)

javascript - 推送到 useReducer 状态的特定路径处的数组