From a1e8ebec8f4bf0f9ec39a418128fd10284176bf0 Mon Sep 17 00:00:00 2001 From: Claes-Fredrik Mannby Date: Tue, 4 Feb 2025 08:46:52 -0800 Subject: [PATCH] Avoid gratuitous re-rendering of components using settings or theme --- src/core/PaperProvider.tsx | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/core/PaperProvider.tsx b/src/core/PaperProvider.tsx index 355818a957..51839a5fc7 100644 --- a/src/core/PaperProvider.tsx +++ b/src/core/PaperProvider.tsx @@ -76,7 +76,7 @@ const PaperProvider = (props: Props) => { }; }, [props.theme, isOnlyVersionInTheme]); - const getTheme = () => { + const theme = React.useMemo(() => { const themeVersion = props.theme?.version || 3; const scheme = colorScheme || 'light'; const defaultThemeBase = defaultThemesByVersion[themeVersion][scheme]; @@ -95,21 +95,24 @@ const PaperProvider = (props: Props) => { ...extendedThemeBase, isV3: extendedThemeBase.version === 3, }; - }; + }, [colorScheme, props.theme, reduceMotionEnabled]); const { children, settings } = props; + const settingsValue = React.useMemo( + () => ({ + icon: MaterialCommunityIcon, + rippleEffectEnabled: true, + ...settings, + }), + [settings] + ); + return ( - - {children} + + {children}