cncjs
49 строк · 959.0 Байт
1import PropTypes from 'prop-types';2import React from 'react';3import ReactDOM from 'react-dom';4
5class OverflowTooltip extends React.Component {6static propTypes = {7title: PropTypes.string8};9
10state = {11overflow: false12};13
14static getDerivedStateFromProps(nextProps, prevState) {15return {16overflow: false17};18}19
20detectOverflow = () => {21const el = ReactDOM.findDOMNode(this);22const overflow = (el.clientWidth < el.scrollWidth);23if (overflow !== this.state.overflow) {24this.setState({ overflow: overflow });25}26};27
28componentDidMount() {29this.detectOverflow();30}31
32componentDidUpdate() {33this.detectOverflow();34}35
36render() {37const { title, ...props } = this.props;38
39if (this.state.overflow) {40props.title = title;41}42
43return (44<div {...props} />45);46}47}
48
49export default OverflowTooltip;50