我遇到了一个奇怪而烦人的React问题 - React在重新渲染时会自动滚动页面。
CodeSandbox上的演示应用程序 - https://codesandbox.io/s/react-scroll-bug-demo-y7u50j?file=/src/App.js 复现步骤:
我创建了一个Vanilla JavaScript应用程序来测试它是否是仅限于Chrome的行为 - 没有错误,一切正常 - 使用Vanilla JS时,在屏幕上重新呈现项目列表时不会发生滚动。这种情况仅适用于React应用程序,非常令人烦恼。
如您从我的CodeSandbox演示中所见:
有什么想法可以防止这种自动滚动?
CodeSandbox上的演示应用程序 - https://codesandbox.io/s/react-scroll-bug-demo-y7u50j?file=/src/App.js 复现步骤:
- 将页面滚动到列表中间,使其第一个元素不再可见。
- 等待重新渲染发生。
- 查看您的页面是否自动滚动,以便第一个元素再次可见。
- 我有一个垂直项目列表。
- 列表重新渲染(项目更改其顺序)。
- 列表在屏幕上可见,但第一个元素不可见(在屏幕上方)。
我创建了一个Vanilla JavaScript应用程序来测试它是否是仅限于Chrome的行为 - 没有错误,一切正常 - 使用Vanilla JS时,在屏幕上重新呈现项目列表时不会发生滚动。这种情况仅适用于React应用程序,非常令人烦恼。
如您从我的CodeSandbox演示中所见:
- 没有任何滚动调用,但它仍然发生。
- 我没有点击任何东西 - 只需将页面滚动到列表中间,您的页面就会自动滚动到顶部。
- 列表的高度没有改变。这里不应该发生布局跳跃。
有什么想法可以防止这种自动滚动?