Skip to content

[Bug] setTheme function rerender #168

@GaiaYang

Description

@GaiaYang

Description

use setTheme function change will cause useEffect loop

Steps to reproduce the behaviour:

use setTheme function in useEffect deps array

const colorScheme = useColorScheme();
const {theme, setTheme} = useContext(ThemeContext);
useEffect(() => {
 setTheme({
   name: colorScheme,
   colors: themeColors[colorScheme],
   components: themeComponents,
 });
}, [colorScheme, setTheme]);

Important Details

I looked at the source, setTheme need useCallback cladding make sure setTheme doesn't change.
like is:

// The value comes from the outside and does not need to be placed in the useEffect deps
const setTheme = useCallback((newTheme: ThemeType) => {
  const mergedTheme = deepmerge(defaultTheme, newTheme);
  setThemeState(mergedTheme);
},[])
  • Version: v1.0.63
  • OS: Android
  • Browser React native

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions