zoukankan      html  css  js  c++  java
  • [React] Capture values using the lifecycle hook getSnapshotBeforeUpdate in React 16.3

    getSnapshotBeforeUpdate is a lifecycle hook that was introduced with React 16.3. It is invoked right before the most recently rendered output is committed and the value returned by it will be passed as a third parameter to componentDidUpdate. It enables your component to capture current values for example a scroll position before they are potentially changed.

    import React, { Component } from "react";
    
    class Chat extends Component {
      wrapperRef = React.createRef();
    
      componentDidMount() {
        this.wrapperRef.current.scrollTop = this.wrapperRef.current.scrollHeight;
      }
    
      getSnapshotBeforeUpdate(prevProps, prevState) {
        const wrapper = this.wrapperRef.current;
        return wrapper.scrollTop + wrapper.offsetHeight >= wrapper.scrollHeight;
      }
    
      componentDidUpdate(prevProps, prevState, snapshot) {
        if (snapshot) {
          this.wrapperRef.current.scrollTop = this.wrapperRef.current.scrollHeight;
        }
      }
    
      render() {
        return (
          <div
            style={{
              height: 200,
              overflowY: "scroll",
              border: "1px solid #ccc"
            }}
            ref={this.wrapperRef}
            children={this.props.children}
          >
            {this.props.children}
          </div>
        );
      }
    }
    
    export default Chat;

  • 相关阅读:
    smarty-2014-02-28
    PHP Functions
    Zabbix自定义监控网站服务是否能够正常响应
    Zabbix自定义监控网站服务是否能够正常响应
    shell技巧
    shell技巧
    ansible安装配置zabbix客户端
    ansible安装配置zabbix客户端
    shell命令getopts
    shell命令getopts
  • 原文地址:https://www.cnblogs.com/Answer1215/p/9010473.html
Copyright © 2011-2022 走看看