위와 같이 light/dark mode에 따라 전체적인 UI 색상이 달라지는 기능을 구현해보았습니다.
누가 디자인했는지 참 예쁘죠 ? ㅎ.ㅎ
light/dark mode에 따라 달라지는 색상 부분이 존재하는데 그 부분만 lightTheme
, darkTheme
에 저장해줍니다.
TypeScript이기 때문에 themeProps
로 타입부터 지정해주었어요!
context API를 통해 theme 객체를 저장하는 방법을 택했습니다.
toggleTheme 함수도 같이 넣어줍니다.
hook처럼 사용해주기 위해 useTheme도 같은 파일에 만들어주었습니다.
ThemeProvider
는 light/dark mode 상관없이 공통적으로 적용될 색상과 폰트를 지정해주었습니다.
만들어둔 ThemeModeProvider
도 사용해줍니다.
이런식으로 사용해주면 됩니다.
toggle switch는 이런 식으로 만들었어요!
theme 객체 자체를 넘겨주기 때문에 emotion에서 위와 같이 매개변수로 넘겨서 바로 사용해주시면 됩니다.
꽤나 챌린징한 과제였습니다.
뿌듯합니다 >_<!!