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;

  • 相关阅读:
    SQL8-函数与触发器
    SQL7-约束与权限
    SQL6-连接与视图
    SQL5-数据类型
    SQL4-嵌套查询
    SQL3-基本运算
    SQL2-基本语法
    SQL1-结构概括
    SQL历史概论
    PHP Fatal error: Class 'mysqli' not found
  • 原文地址:https://www.cnblogs.com/Answer1215/p/9010473.html
Copyright © 2011-2022 走看看