javascript - 如何在本机反应中将事件侦听器添加到状态
问题描述
FlatList
当状态发生messages
变化时,我正在尝试滚动到我的末尾。目前我正在this.refs.flatList.scrollToEnd();
等待一段时间后使用,效果很好。我想要做的是向messages
状态添加一个事件侦听器,这样当列表以任何方式更改时,它都会滚动到列表的末尾。我试过
componentDidMount(){
this.state.messages.addEventListener('change', this._handleNewMessage);
}
但它不起作用。有谁知道我可以实现这一目标的方法?
解决方案
这将是生命周期方法componentDidUpdate
的用途:
componentDidUpdate()
在更新发生后立即调用。初始渲染不调用此方法。当组件更新时,将此作为对 DOM 进行操作的机会。...
自然,您必须确保this.state.messages
仅更改 via setState
——但这已经是真的, usingcomponentDidUpdate
不会改变这一点。
componentDidUpdate() {
this.refs.flatList.scrollToEnd();
}
推荐阅读
- java - 如何为自定义日志记录解决方案正确创建性能测试?
- python-3.x - 用几分之一秒计算平均时间
- python - 是否可以防止“pipenv”将绝对解释器路径硬编码到文件中?
- identityserver4 - 如何为 IdentityServer4 创建共享密钥?
- swift - 从 navigationStack 中移除 ViewController 并添加它的新实例
- if-statement - 在 Google 表格中进行多个匹配的 Vlookup
- variables - 我可以从当前行创建 awk 变量吗?
- python - 使用字符串导入类
- python - 有没有办法每 30 行循环一次矩阵/数组/df 以返回 scipy.stats.describe
- c# - 如何创建 EF 迁移类