diff --git a/src/components/skeleton/skeleton_circle.tsx b/src/components/skeleton/skeleton_circle.tsx index 0bbe9cb2331..e2e13b6b64e 100644 --- a/src/components/skeleton/skeleton_circle.tsx +++ b/src/components/skeleton/skeleton_circle.tsx @@ -9,8 +9,8 @@ import React, { FunctionComponent, HTMLAttributes } from 'react'; import classNames from 'classnames'; +import { useEuiMemoizedStyles } from '../../services'; import { CommonProps } from '../common'; -import { useEuiTheme } from '../../services'; import { EuiSkeletonLoading, _EuiSkeletonAriaProps } from './skeleton_loading'; import { euiSkeletonCircleStyles } from './skeleton_circle.styles'; @@ -36,8 +36,7 @@ export const EuiSkeletonCircle: FunctionComponent = ({ children, ...rest }) => { - const euiTheme = useEuiTheme(); - const styles = euiSkeletonCircleStyles(euiTheme); + const styles = useEuiMemoizedStyles(euiSkeletonCircleStyles); const cssStyles = [styles.euiSkeletonCircle, styles[size]]; return ( diff --git a/src/components/skeleton/skeleton_rectangle.tsx b/src/components/skeleton/skeleton_rectangle.tsx index aea4b26816b..8c7ca1db71a 100644 --- a/src/components/skeleton/skeleton_rectangle.tsx +++ b/src/components/skeleton/skeleton_rectangle.tsx @@ -9,8 +9,8 @@ import React, { FunctionComponent, HTMLAttributes } from 'react'; import classNames from 'classnames'; +import { useEuiMemoizedStyles } from '../../services'; import { CommonProps } from '../common'; -import { useEuiTheme } from '../../services'; import { logicalStyles } from '../../global_styling'; import { EuiSkeletonLoading, _EuiSkeletonAriaProps } from './skeleton_loading'; @@ -44,8 +44,7 @@ export const EuiSkeletonRectangle: FunctionComponent< children, ...rest }) => { - const euiTheme = useEuiTheme(); - const styles = euiSkeletonRectangleStyles(euiTheme); + const styles = useEuiMemoizedStyles(euiSkeletonRectangleStyles); const cssStyles = [styles.euiSkeletonRectangle, styles[borderRadius]]; return ( diff --git a/src/components/skeleton/skeleton_text.tsx b/src/components/skeleton/skeleton_text.tsx index c4f046c34c1..4f3bfc8145d 100644 --- a/src/components/skeleton/skeleton_text.tsx +++ b/src/components/skeleton/skeleton_text.tsx @@ -6,11 +6,11 @@ * Side Public License, v 1. */ -import React, { FunctionComponent, HTMLAttributes } from 'react'; +import React, { FunctionComponent, HTMLAttributes, useMemo } from 'react'; import classNames from 'classnames'; +import { useEuiMemoizedStyles } from '../../services'; import { CommonProps } from '../common'; -import { useEuiTheme } from '../../services'; import { TextSize } from '../text/text'; import { EuiSkeletonLoading, _EuiSkeletonAriaProps } from './skeleton_loading'; @@ -45,14 +45,19 @@ export const EuiSkeletonText: FunctionComponent = ({ children, ...rest }) => { - const euiTheme = useEuiTheme(); - const styles = euiSkeletonTextStyles(euiTheme); - const lineCssStyles = [styles.euiSkeletonText, styles[size]]; + const styles = useEuiMemoizedStyles(euiSkeletonTextStyles); + const cssStyles = useMemo( + () => [styles.euiSkeletonText, styles[size]], + [styles, size] + ); - const lineElements = []; - for (let i = 0; i < lines; i++) { - lineElements.push(); - } + const lineElements = useMemo(() => { + const lineElements = []; + for (let i = 0; i < lines; i++) { + lineElements.push(); + } + return lineElements; + }, [lines, cssStyles]); return ( = ({ children, ...rest }) => { - const euiTheme = useEuiTheme(); - const styles = euiSkeletonTitleStyles(euiTheme); + const styles = useEuiMemoizedStyles(euiSkeletonTitleStyles); const cssStyles = [styles.euiSkeletonTitle, styles[size]]; return (