TIL 52. React Native - useColorScheme

isk·2023년 1월 11일
0

TIL

목록 보기
49/122
post-custom-banner
// App.js

import { useColorScheme } from "react-native";
import { ThemeProvider } from "@emotion/react";

// (...)

const isDark = useColorScheme() === "dark

// (...)

return (
    <QueryClientProvider client={queryClient}>
      <ThemeProvider theme={isDark ? darkTheme : lightTheme}>
        <NavigationContainer>
          <Root />
        </NavigationContainer>
      </ThemeProvider>
    </QueryClientProvider>
  );

테마를 사용하기 위해 ThemeProvider로 감쌌다.

// theme.js

export const lightTheme = {
  title: "black",
  backgroundColor: "white",
  itembgColor: "#efddae",
};
export const darkTheme = {
  title: "white",
  backgroundColor: "#273c75",
  itembgColor: "black",
};

위 코드처럼 변수로 스타일들을 지정해주면,

import { useColorScheme } from "react-native";

// (...)

const isDark = useColorScheme() === "dark";

// (...)

useColorScheme이 있는 곳의,

// Detail.js

const ScrollContainer = styled.ScrollView`
  background-color: ${({ theme }) => theme.backgroundColor};
`;

styled component 안에서 사용가능하다.

근데, 간혹 지정해준 스타일이 아니라, isDark에 따라 개별적으로 스타일을 주고 싶을 때는 아래처럼 하면 된다.

const InputId = styled.TextInput`
  width: 48%;
  height: 30px;
  padding: 0 12px;
  border: 1px solid ${(isDark) => (isDark ? "white" : "#333")};
  border-radius: 8px;
`;
post-custom-banner

0개의 댓글