首页 > 解决方案 > 如何在本机反应中将事件侦听器添加到状态

问题描述

FlatList当状态发生messages变化时,我正在尝试滚动到我的末尾。目前我正在this.refs.flatList.scrollToEnd();等待一段时间后使用,效果很好。我想要做的是向messages状态添加一个事件侦听器,这样当列表以任何方式更改时,它都会滚动到列表的末尾。我试过

componentDidMount(){
        this.state.messages.addEventListener('change', this._handleNewMessage);
}

但它不起作用。有谁知道我可以实现这一目标的方法?

标签: javascriptreact-nativeexpo

解决方案


这将是生命周期方法componentDidUpdate的用途:

componentDidUpdate()在更新发生后立即调用。初始渲染不调用此方法。

当组件更新时,将此作为对 DOM 进行操作的机会。...

自然,您必须确保this.state.messages仅更改 via setState——但这已经是真的, usingcomponentDidUpdate不会改变这一点。

componentDidUpdate() {
    this.refs.flatList.scrollToEnd();
}

推荐阅读