【发布时间】:2017-12-21 11:35:26
【问题描述】:
我有一个列表,我想滚动到底部,我的组件是这样编码的
class Msg extends Component {
componentDidUpdate() {
if(this.container){
this.container.scrollTop = this.container.scrollHeight
}
}
render() {
return(
<div ref={elem = this.container = elem}>
<Item />
<Item />
<Item />
</div>
)
}
}
成功了。但问题是每次组件重新渲染时它都会滚动。 Msg有很多子组件,触发子组件的状态会导致Msg组件重新渲染,如何解决?
像普通用户一样解释:
用户向上滚动列表,然后单击某处的下拉菜单,componentDidUpdate 触发,导致滚动到底部。
【问题讨论】:
-
那么,您希望它什么时候向下滚动...当添加新项目时?我建议在 UX 中添加一个新按钮,允许用户在需要时向下滚动。
-
@camou 在 whatssap 的消息中,你看到一个按钮吗?
-
不,但是当我在 iOS9.2 上向上滚动时,WhatsApp 不会强迫我向下滚动。那么,您希望何时向下滚动、何时有新消息或何时用户在最后几秒钟内停止向上滚动?
标签: javascript reactjs ecmascript-6