首页 > 解决方案 > 如果我想监听元素的 boundingClientRect() 变化,应该在 useEffect 的依赖数组中放入什么?

问题描述

每当我的布局中的某些内容发生变化时,我试图获得一个position:absolute指向重新定位的箭头,如果这会影响到的位置(例如侧边栏打开或关闭或窗口被调整大小)。 无论何时发生变化的东西。不幸的是,将etc 添加到依赖项数组中不起作用。在这种情况下,它只会在状态改变时更新一次箭头,而不是平滑地跟随目标的动画。targetelementtargetelement
boundingClientrecttargetelementelemRect.left

我也尝试过ResizeObserver,它不会在目标元素移动时触发,而只会在它调整大小时触发。

省略依赖数组(如示例中所示)实现了我想要发生的事情,但它完全炸毁了计算机。我还经常收到“超出最大更新深度错误”,这是有道理的,因为箭头基本上一直在更新状态。

使用useLayoutEffect也不行。

我有一个我需要的小例子:

https://codesandbox.io/embed/suspicious-haze-4jdi1

我很乐意就如何正确解决这个问题提出建议。

提前致谢!

标签: reactjsreact-hooksuse-effect

解决方案


推荐阅读