import * as React from 'react'; import classNames from 'classnames'; import { polyfill } from 'react-lifecycles-compat'; type widthUnit = number | string; export interface SkeletonParagraphProps { prefixCls?: string; className?: string; style?: object; width?: widthUnit | Array; rows?: number; } interface SkeletonParagraphState { prevProps: SkeletonParagraphProps; widthList: Array; } class Paragraph extends React.Component { static defaultProps: Partial = { prefixCls: 'ant-skeleton-paragraph', }; static getDerivedStateFromProps( props: SkeletonParagraphProps, state: SkeletonParagraphState, ): Partial { const { prevProps } = state; const { width, rows = 2 } = props; const newState: Partial = { prevProps: props, }; if (rows !== prevProps.rows || width !== prevProps.width) { // Parse width list let widthList = []; if (width && Array.isArray(width)) { widthList = width; } else if (width && !Array.isArray(width)) { widthList = []; widthList[rows - 1] = width; } newState.widthList = widthList; } return newState; } state: SkeletonParagraphState = { prevProps: {}, widthList: [], }; render() { const { widthList } = this.state; const { prefixCls, className, style, rows } = this.props; const rowList = [...Array(rows)].map((_, index) => (
  • )); return (
      {rowList}
    ); } } polyfill(Paragraph); export default Paragraph;