【发布时间】:2021-08-12 13:19:55
【问题描述】:
每当列表更新时,我都会尝试将消息列表自动滚动到底部。这是我的代码:
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);
每当通过表单提交消息或列表由创建的函数更新时,它不会自动滚动。 我引用了受影响的列表组件,但它似乎不正确。你有什么建议吗?
【问题讨论】:
标签: javascript reactjs redux react-redux