index.js 808 B

123456789101112131415161718192021222324252627282930313233
  1. /*
  2. * @Author: honghaitao_v
  3. * @Date: 2021-08-25 15:21:43
  4. * @Last Modified by: 洪海涛
  5. * @Last Modified time: 2021-08-25 15:49:02
  6. */
  7. import React, { useState, useRef, useLayoutEffect } from "react"
  8. import { Tooltip } from "antd"
  9. /**
  10. * name
  11. * width
  12. **/
  13. export default function IsEllipsis(props) {
  14. const { name = "", width = 50, placement = "topLeft" } = props
  15. const nameEl = useRef(null)
  16. const [showTooltip, setShowTooltip] = useState(false)
  17. useLayoutEffect(() => {
  18. setShowTooltip(nameEl.current.scrollWidth > width)
  19. }, [name])
  20. return (
  21. <div className="ellipsis" ref={nameEl} style={{ maxWidth: `${width}px` }}>
  22. {showTooltip ? (
  23. <Tooltip placement={placement} title={name}>
  24. {name}
  25. </Tooltip>
  26. ) : (
  27. name
  28. )}
  29. </div>
  30. )
  31. }