reactjs - React useRef 滚动仅在 setTimeout 内工作
问题描述
我正在尝试在反应应用程序上使用 scrollIntoView ,因此在页面中我正在使用它
useEffect(() => {
myRef.current.scrollIntoView({ behavior: 'smooth' });
}, [myRef, selectedSectionIndex, modalOpen]);
它几乎适用于所有情况,因为我有ref={myRef}
关联到我想要查看的元素。但是,在其中一个转换中,即使调用了代码,它也不做任何事情(甚至不会引发错误)。只有当我将其更改为
useEffect(() => {
setTimeout(() => myRef.current.scrollIntoView({ behavior: 'smooth' }), 0);
}, [myRef, selectedSectionIndex, modalOpen]);
我已经阅读过类似的问题,这就是我实际尝试此解决方案的原因。但不能真正说明这是如何解决它的。我一直在阅读第一个代码运行时引用的 dom 元素可能尚未呈现,但是
一个。为什么会出现在第二个?湾。在该行上方放置一个调试器,我可以看到该元素存在于 DOM 中,如果我释放调试器,则可以看到更多元素,同样并且静默地什么也不做,但如果我跨过并运行该行,它实际上会滚动。编辑:我附上截图调试器的,如果我什么都不按 f8,如果我按 f10 它会滚动
我想稀释有一种更清洁的方法来完成这项工作,但找不到
谢谢
解决方案
推荐阅读
- flutter - Flutter path_provider 插件不起作用 - (操作系统错误:没有这样的文件或目录,errno = 2)
- c++ - std::less 是否应该允许在编译时比较不相关的指针?
- python - 从 pandas 获取直到最高日期的行数
- python-3.x - Python- Aws Boto 3 从具有未知深度的存储桶/前缀中搜索子文件夹
- sql - 枢轴并获得排名
- ruby-on-rails - 在你的命令前加上 `bundle exec` 可以解决这个问题。甚至预先捆绑执行
- python - 返回空的函数支持清除临时数据
- xpath - 如何使用 Scrapy XPATH 选择这个元素?
- amazon-web-services - Certbot 无法找到环境变量凭据
- java - java虚拟机启动器错误:发生jni错误