当FlatList
的状态更改时,我试图滚动到messages
的末尾。目前,我稍等片刻后就使用this.refs.flatList.scrollToEnd();
,可以正常使用。我想做的是将事件侦听器添加到messages
状态,以便以任何方式更改列表时,它将滚动到列表的末尾。我尝试过
componentDidMount(){
this.state.messages.addEventListener('change', this._handleNewMessage);
}
但是它不起作用。有人知道我可以做到这一点的方法吗?
答案 0 :(得分:3)
这就是生命周期方法componentDidUpdate
的用途:
componentDidUpdate()
在更新发生后立即被调用。初始渲染未调用此方法。使用此机会在组件更新后在DOM上进行操作。 ...
自然地,您必须确保仅通过this.state.messages
来更改setState
,但这已经是正确的,使用componentDidUpdate
并不会改变。
componentDidUpdate() {
this.refs.flatList.scrollToEnd();
}