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;

  • 相关阅读:
    js中面向对象的写法
    js中防止全局变量被污染的方法
    移动端的头部标签和meta
    励志
    UX是什么?
    HTTP
    Django RestFramework (DRF)
    Vue(一)
    Vue-基础
    Vue-es6基础语法
  • 原文地址:https://www.cnblogs.com/Answer1215/p/9010473.html
Copyright © 2011-2022 走看看