const localTheme = themeStorage.get();
export const themeState = atom<boolean>({
key: 'theme',
default: !!localTheme,
});
import { ThemeProvider } from 'styled-components';
const App = () => {
const theme = useRecoilValue(themeState);
const thisTheme = theme ? darkTheme : lightTheme;
return (
<ThemeProvider theme={{ ...thisTheme }}>
...
<ThemeButton />
</ThemeProvider>
);
}
export default App;
const ThemeButton = () => {
const [theme, setTheme] = useRecoilState(themeState);
const onClick = () => {
setTheme((prev) => {
if (prev) {
themeStorage.remove();
return !prev;
}
themeStorage.set();
return !prev;
});
}
return (
<ToggleButton type='button' onClick={onClick}>
...
</ToggleButton>
)
}
export default ThemeButton;