【问题标题】:how to add an event listener to a state in react native如何在本机反应中将事件侦听器添加到状态
【发布时间】:2019-03-26 16:00:52
【问题描述】:

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

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

但它不起作用。有谁知道我可以做到这一点的方法吗?

【问题讨论】:

  • “当列表以任何方式改变时”你是什么意思?

标签: javascript react-native expo


【解决方案1】:

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

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

当组件更新时,以此为契机对 DOM 进行操作。 ...

当然,您必须确保 this.state.messages 仅通过 setState 更改 — 但这已经是事实,使用 componentDidUpdate 不会改变这一点。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 2014-06-19
    相关资源
    最近更新 更多