+ Want to add more pages? Please refer to{' '} + + use block + + 。 +
+
+
+ {children}
+
+
+);
+
+const Welcome: React.FC = () => {
+ const intl = useIntl();
+
+ return (
+ 活跃用户
+{activeUser}
+新增用户
+{newUser}
+
+
+
+
= + | React.StatelessComponent
+ | React.ComponentClass
+ | React.ClassicComponentClass
; + +function computeHeight(node: HTMLDivElement) { + const { style } = node; + style.height = '100%'; + const totalHeight = parseInt(`${getComputedStyle(node).height}`, 10); + const padding = + parseInt(`${getComputedStyle(node).paddingTop}`, 10) + + parseInt(`${getComputedStyle(node).paddingBottom}`, 10); + return totalHeight - padding; +} + +function getAutoHeight(n: HTMLDivElement | undefined) { + if (!n) { + return 0; + } + + const node = n; + + let height = computeHeight(node); + const parentNode = node.parentNode as HTMLDivElement; + if (parentNode) { + height = computeHeight(parentNode); + } + + return height; +} + +type AutoHeightProps = { + height?: number; +}; + +function autoHeight() { + return
( + WrappedComponent: React.ComponentClass
| React.FC
, + ): React.ComponentClass
=> { + class AutoHeightComponent extends React.Component
{ + state = { + computedHeight: 0, + }; + + root: HTMLDivElement | undefined = undefined; + + componentDidMount() { + const { height } = this.props; + if (!height) { + let h = getAutoHeight(this.root); + this.setState({ computedHeight: h }); + if (h < 1) { + h = getAutoHeight(this.root); + this.setState({ computedHeight: h }); + } + } + } + + handleRoot = (node: HTMLDivElement) => { + this.root = node; + }; + + render() { + const { height } = this.props; + const { computedHeight } = this.state; + const h = height || computedHeight; + return ( +