React Native Flatlist scrollToEnd 添加新项目后



添加新列表项(如聊天)后,我需要滚动到平面列表的末尾。所以我用新消息更改状态,然后使用:

this.setState({messages});
this.messagesList.scrollToEnd({animated: true});

只有当我添加一些"魔术"设置超时(200 毫秒)时,它才会起作用。有什么方法可以检测添加了新消息,我可以调用scrollToEnd?

setState是异步的,因此在它之后执行此类操作将不起作用。

要在设置状态后执行某些操作 - 将回调作为第二个参数传递给setState

this.setState(
    {messages}, 
    () => this.messagesList.scrollToEnd({animated: true})
);

但根据我的经验,你仍然需要短暂的setTimeout.由于设置状态后,渲染可能会产生一些滞后,并且滚动将过早触发。

相关内容

  • 没有找到相关文章

最新更新