【问题标题】:List scroll automatic to the bottom after every update [duplicate]每次更新后列表自动滚动到底部[重复]
【发布时间】: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


    【解决方案1】:

    您可以在组件末尾创建一个虚拟 div,并使用 scrollIntoView 滚动到底部。

    检查这个以获取参考 How to scroll to bottom in react?

    如果我阻止了你,请竖起大拇指。

    【讨论】:

    • 而不是回答并基本上链接到 actual 答案也许最好将帖子标记为重复,或者如果您不确定,请将您的评论作为评论和指向其他 SO 帖子/答案的链接。
    • 这个答案可能还可以,但你能提供一个代码示例,这样更容易理解。
    • 你是对的。实际上是另一个答案的相同问题。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 2016-11-13
    • 1970-01-01
    • 2020-09-13
    相关资源
    最近更新 更多