【发布时间】:2015-08-02 15:41:20
【问题描述】:
每次在 React.js 中执行渲染时,UI 都会滚动到页面顶部。
JSFiddle:http://jsfiddle.net/bengrunfeld/dcfy5xrd/
任何漂亮的或反应的方法来阻止它?
例如如果用户向下滚动页面,然后按下导致渲染的按钮,UI 将保持与之前相同的滚动位置。
// Forces a render which scrolls to top of page
this.setState({data: data});
更新:为什么某些渲染的 UI 会滚动到顶部,而其他渲染则不会?
【问题讨论】:
-
您能否提供一个 JSBin/JSFiddle 来说明这一点?我的任何 React 应用程序都没有发生这种情况。
-
当滚动的 dom 节点被卸载并重新安装时,可能会发生这种情况。确保对应元素的
key/父树在渲染之间不会发生变化。 -
@Morhaus 但是,如果您需要相应元素的键/父树在渲染之间进行更改怎么办。例如。用户向表中添加一行,然后您触发渲染添加该行。有什么办法可以阻止“滚动到顶部”的后果?
-
@Morhaus 所以我仔细检查了,在渲染过程中被改变的元素的键没有改变——只有它们的值。这很奇怪,因为如果您在页面上的 一些 事物上调用渲染,它不会滚动到顶部。
-
正如安德斯所说,请在 JSFiddle 中提供您的问题的最小示例。
标签: javascript jquery reactjs