Context
Context를 사용하는 이유는 무엇일까?
어떤 컴포넌트에서든지 상관없이 공통된 자료를 사용하기 위함이다.
Context를 통해서는 App 전체적으로 적용되어야 할 색상이나, 글씨체, size등을 공유한다.
Styled Component를 사용하면 theme를 받아서 아래와 같이 사용할 수 있다.
1
2
3
|
const Container = styled.View`
background-color: ${({ theme }) => theme.background};
`;
|
cs |
theme.background로 어디에서나 동일한 배경색을 사용할 수 있다.
Context를 사용해 Component의 style설정하기
그런데 Component에 style로 직접 설정해야 할 경우가 있다.
1
2
3
4
|
<Text
style={{ color: "black" }}
// style={{ color: ${({ theme }) => theme.main} }} // 적용불가능
>Title</Text>
|
cs |
보통 style을 설정하는 object에서는 속성의 값으로 ${({ theme }) => theme.main}나 theme.main을 사용할 수 없다.
${({ theme }) => theme.main}을 사용한 경우에는 SyntaxError
theme.main을 사용한 경우에는 ReferenceError가 나온다.
이런 경우에는 어떻게 해야할까?
useContext와 ThemeContext를 사용해서 return 안에서 theme을 사용할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import React, { useContext } from "react";
import styled, { ThemeContext } from "styled-components/native";
const App = () => {
// Context를 사용하기 위한 코드
const theme = useContext(ThemeContext);
return (
<Container>
<Text
style={{ color: theme.main }}
>Title</Text>
</Container>
);
};
export default App;
|
cs |
const theme = useContext(ThemeContext); 라는 코드를 App 내에 작성해주면 theme를 자유롭게 사용할 수 있다.
강의 출처
'React Native' 카테고리의 다른 글
[RN, Firebase] Firebase로 사용자 인증 받기 (0) | 2022.01.17 |
---|---|
[RN, Firebase] Firebase시작하기, Storage 사용하기 (0) | 2022.01.14 |
[React Native] Context API (0) | 2022.01.10 |
[React Native] 진행바(Progress Bar) 만들기 (0) | 2021.12.28 |
expo - custom font 적용하기 (0) | 2021.12.23 |