javascript - 每次更新后列表自动滚动到底部
问题描述
每当列表更新时,我都会尝试将消息列表自动滚动到底部。这是我的代码:
import React, { Component } from "react";
import { connect } from "react-redux";
import { bindActionCreators } from "redux";
import Message from "../components/message";
import MessageForm from "../containers/message_form";
import { fetchMessages } from "../actions";
class MessageList extends Component {
componentWillMount() {
this.fetchMessages();
}
componentDidMount() {
this.refresher = setInterval(this.fetchMessages, 5000);
}
componentDidUpdate() {
this.list.scrollTop = this.list.scrollHeight;
}
componentWillUnmount() {
clearInterval(this.refresher);
}
fetchMessages = () => {
this.props.fetchMessages(this.props.selectedChannel);
};
render() {
return (
<div>
<div>
<span>Channel #{this.props.selectedChannel}</span>
</div>
<div
ref={(list) => {
this.list = list;
}}
>
{this.props.messages.map((message) => {
return <Message key={message.id} message={message} />;
})}
</div>
<MessageForm />
</div>
);
}
}
function mapStateToProps(state) {
return {
messages: state.messages,
selectedChannel: state.selectedChannel,
};
}
function mapDispatchToProps(dispatch) {
return bindActionCreators({ fetchMessages }, dispatch);
}
export default connect(mapStateToProps, mapDispatchToProps)(MessageList);
每当通过表单提交消息或列表由创建的函数更新时,它不会自动滚动。我引用了受影响的列表组件,但它似乎不正确。你有什么建议吗?
解决方案
推荐阅读
- flutter - 使用条件自动填充 textformfield 控制器
- python - 如何根据Django中的今天当前日期过滤日期?
- javascript - 您的全局 Angular CLI 版本 (10.2.0) 高于本地版本 (10.0.8)。使用本地 Angular CLI 版本
- nginx - flask+ngix+uwsgi 没有从路由 ubuntu 20 中剥离脚本根目录
- resize - 如何调整 nifti(nii.gz 医学图像)文件的大小
- python - 处理字典中的 KeyError 的更有效方法
- angular - 为什么我的 Angular 应用程序(仅在移动设备上)出现空白屏幕?
- macos - 为什么使用 pdftk 创建的 PDF 书签没有显示在 macOS 预览中?
- java - 即使授予权限后,Android文件写入权限被拒绝错误
- php - arahow 可以通过 graph api explorer 用旧版本(v4.0)检查我的 facebook 端点吗?