React Native

React Native - style 적용하기

joy_lee 2021. 12. 6. 18:47

React Native에서는 여러가지 방법으로 스타일을 적용할 수 있다.

 

스타일 적용 방법

inline/StyleSheet 사용 두 가지가 가능한데, 여러가지 조합으로 적용할 수 있다.

 

1. inline 으로 적용하기

style={{ backgroundColor: "black", color: "white", fontSize: 30 }}

2. StyleSheet 사용하기

style={styles.text}

3. StyleSheet 여러개 사용하기

style={[ styles.text, styles.errorText ]}

4. StyleSheet와 inline 함께 적용하기

style={[ styles.text, { color: "blue"} ]}

여러개의 StyleSheet나 StyleSheet+inline은 배열로 적용할 수 있다.

 

CSS와의 차이점

HTML/CSS에서 사용하는 것과 비슷하지만, 다른 점이 있다.

  HTML/CSS React-Native
스타일 구분 ; (세미콜론) , (콤마)
속성명 표기법 snake-case (-) CamelCase (대문자)
단위 px, em 등 단위생략
속성값 red, center 등 그냥 써도됨 "white" 같이 string으로 입력해야함

 

StyleSheet 사용방법

StyleSheet를 사용하기 위해서는 import해줘야 한다.

그리고 스타일들을 각각 정의해준다.

import { StyleSheet } from "react-native";

const styles = StyleSheet.create({
    스타일명: { , , },
    스타일명: { , , }
});

 

동일한 내용은 제거하고, 여러개의 스타일을 사용할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
// <Text style={[styles.text, styles.errorText]}>Error Text</Text>
 
const styles = StyleSheet.create({
  text: { 
    backgroundColor: "black",
    color: "white",
    fontSize: 30 },
  errorText: {
    // backgroundColor: "black",
    // fontSize: 30,
    color: "red"
  },
});
cs

style.text와 style.errorText를 같이 사용하면 backgroundColor: "black", fontSize: 30, color: "red"의 Text 컴포넌트를 만들 수 있다.

 

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import React from "react";
import { StyleSheet, View, Text } from "react-native";
 
export default function App() {
  return (
    <View style=<styles.container}>
      <Text style={{ backgroundColor: "black", color: "white", fontSize: 30 }}>Style Code</Text>
      <Text style={styles.text}>Text</Text>
      <Text style={[ styles.text, styles.errorText ]}>Error Text</Text>
      <Text style={[ styles.text, { color: "blue"} ]}>Blue Text</Text>
    </View>
  );
}
 
const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: "#fff",
    alignItems: "center",
    justifyContent: "center",
  },
  text: { 
    backgroundColor: "black",
    color: "white",
    fontSize: 30 },
  errorText: {
    color: "red"
  },
});
 
cs

위와 같이 작성한 코드는 아래와 같이 표현된다.

StyleSheet를 사용하는 경우 여러가지 장점이 있다.

  • HTML의 class처럼 사용가능하다.
  • 코드가 더 깔끔해지며, 적용된 스타일의 이유를 명확히 알 수 있다.
  • 코드 수정도 용이해진다.

스타일 외부에서 관리하기

style.js라는 파일을 따로 만들어 스타일만 복사한다.

다른 곳에서 사용할 수 있도록 export 해야한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import { StyleSheet } from "react-native";
 
export const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: "#fff",
    alignItems: "center",
    justifyContent: "center",
  },
  text: {
    backgroundColor: "black",
    color: "white",
    fontSize: 30,
  },
  errorText: {
    color: "red",
  },
});
 
export const orangeText = {
    color: 'orange'
};
 
cs

사용할 곳에서 import하고 그대로 사용할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 코드 생략됨
import { styles, orangeText } from "./style"
 
export default function App() {
  return (
    <View style={styles.container}>
      <Text style={{ backgroundColor: "black", color: "white", fontSize: 30 }}>
        Style Code
      </Text>
      <Text style={styles.text}>Text</Text>
      <Text style={[styles.text, styles.errorText]}>Error Text</Text>
      <Text style={[styles.text, { color: "blue"} ]}>Blue Text</Text>
      <Text style={[styles.text, orangeText]}>Orange Text</Text>
    </View>
  );
}
 
// style 코드 삭제함
cs

style코드가 없어도 정상적으로 작동하는 것을 알 수 있다.

'React Native' 카테고리의 다른 글

React Native - 그림자 속성과 Platform  (0) 2021.12.07
React Native - flex와 정렬  (0) 2021.12.07
React Native - 이벤트  (0) 2021.12.03
React Native - State  (0) 2021.12.03
React Native - Props, Children  (0) 2021.12.03