需求:

在文本溢出的时候,显示气泡

JS相关知识

// target js元素
const containerLength = target.width; //当前容器的宽度
const textLength = target.scrollWidth; // 当前文字(包括省略部分)的宽度

文本溢出的css, 如超过100px显示...

.ellipis {
display: inline-block;
vertical-align: middle;
width: auto;
max-width: 100px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}

react组件计算,是否溢出

import React, { Component } from "react";
import { Popover } from "antd" export default class PopoverEllipsis extends Component{
constructor(props) {
super(props); this.state = {
showPopover: false
};
} componentDidMount() {
this.validShowPopover();
} validShowPopover = () => {
const { scrollWidth, clientWidth } = this.children;
this.setState({
showPopover: scrollWidth > clientWidth
})
} refChildren = (ref) => {
this.children = ref;
} renderChildren() {
return (
React.cloneElement(
this.props.children, {
ref: this.refChildren
}
)
)
} render() {
let {
children,
...other
} = this.props;
const {
showPopover
} = this.state; if (showPopover) {
return (
<Popover
title={null}
content={null}
placement="top"
{...other}
>
{ this.renderChildren() }
</Popover>
)
} return this.renderChildren()
}
}
05-24 10:38