React Native - ๊ธฐ๋ณธ Layout, API

2026. 1. 13. 15:57ยท๐Ÿ›ธ React Native

React Native

 

 

โœ… ๊ธฐ๋ณธ Component


View

Container ์—ญํ• (div ๊ฐ™์€ ๋А๋‚Œ)

style ์†์„ฑ๋„ ์žˆ๊ณ  ์›น๊ณผ ๊ฑฐ์˜ ๋น„์Šทํ•˜๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์Šคํƒ€์ผ์ด ๋ช‡๋ช‡ ์กด์žฌํ•œ๋‹ค.

 

Text

React Native์— ์žˆ๋Š” ๋ชจ๋“  text๋“ค์€ Text component ์•ˆ์— ๋“ค์–ด๊ฐ€์•ผ ํ•œ๋‹ค.

 

ActivityIndicator

๋กœ๋”ฉ ํ‘œ์‹œ

<ActivityIndicator size="large" color="black" />

 

TouchableOpacity

๋ˆ„๋ฅด๋Š” ์ด๋ฒคํŠธ๋ฅผ listenํ•  ์ค€๋น„๊ฐ€ ๋œ View

๋ˆ„๋ฅด๋ฉด ํˆฌ๋ช…๋„ ๋ณ€๊ฒฝ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์ ์šฉ๋จ

onPress ์†์„ฑ์— ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์ค˜์„œ ๋ˆŒ๋ ธ์„ ๋•Œ ๋™์ž‘๋„ ์ง€์ • ๊ฐ€๋Šฅ

hitSlop: ํ„ฐ์น˜ ๊ฐ€๋Šฅ ์˜์—ญ ์„ค์ •

 

TouchableHighlight

๋ˆŒ๋ €์„ ๋•Œ ์š”์†Œ์˜ ๋ฐฐ๊ฒฝ์ƒ‰์ด ๋ฐ”๋€Œ๊ฒŒ ํ•ด์คŒ(underlayColor)

onPress ์†์„ฑ์— ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์ค˜์„œ ๋ˆŒ๋ ธ์„ ๋•Œ ๋™์ž‘๋„ ์ง€์ • ๊ฐ€๋Šฅ

 

TouchableWithoutFeedback

์•„๋ฌด ํšจ๊ณผ ์—†๋Š” Touchable component

 

Pressable

Touchable ํ›„์† ๋А๋‚Œ

๋” ๋งŽ์€ ์„ค์ • ๊ฐ€๋Šฅ

hitSlop: ํ„ฐ์น˜ ๊ฐ€๋Šฅ ์˜์—ญ ์„ค์ •

 

TextInput

React Native์—์„œ ์œ ์ €๊ฐ€ text๋ฅผ ์ ์„ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•

keyboardType: ํ‚ค๋ณด๋“œ ํƒ€์ž… ์„ค์ •

returnKeyType: ์—”ํ„ฐ์˜ ํ…์ŠคํŠธ ์ข…๋ฅ˜ ์„ค์ •

multiline: ์—ฌ๋Ÿฌ ์ค„๋กœ ์ž…๋ ฅ๊ฐ’ ํ‘œ์‹œ

secureTextEntry: ์ž…๋ ฅ๊ฐ’ ์ˆจ๊ธฐ๊ธฐ

placeholderTextColor: placeholder ์ƒ‰์ƒ ์ง€์ •

submitBehavior: "blurAndSubmit"(enter์‹œ ํ‚ค๋ณด๋“œ ๋‹ซ๊ณ  ์ œ์ถœ) | "newline"(enter์‹œ ์ค„๋ฐ”๊ฟˆ) | "submit"(enter์‹œ ํ‚ค๋ณด๋“œ ์œ ์ง€ํ•˜๊ณ  ์ œ์ถœ)

 

StyleSheet.create()

style object๋“ค์„ ๋‹ด๋Š” object

import { StatusBar } from "expo-status-bar";
import { StyleSheet, Text, View } from "react-native";

export default function App() {
  return (
    <View style={styles.container}>
      <Text style={styles.text}>Hello!</Text>
      <StatusBar style="auto" />
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: "#fff",
    alignItems: "center",
    justifyContent: "center",
  },
  text: {
    fontSize: 48,
  },
});

 

StyleSheet.create ์‚ฌ์šฉ ์ด์œ (ํ•„์ˆ˜๋Š” ์•„๋‹˜, inline style๋กœ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ):

1. ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ ์ œ๊ณต

2. ์Šคํƒ€์ผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ •๋ฆฌํ•˜๋Š”๋ฐ ์œ ์šฉ

 

โœ… Expo SDK


React Native์—์„œ๋Š” ํ•„์ˆ˜ Component, API๋งŒ ์ œ๊ณตํ•œ๋‹ค.

๋‚˜๋จธ์ง€ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋“ค์€ Expo SDK์—์„œ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

AsyncStorage

npx expo install @react-native-async-storage/async-storage

 

string๋งŒ ์ €์žฅ ๊ฐ€๋Šฅํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €์˜ localStorage์ฒ˜๋Ÿผ ์ž‘๋™ํ•œ๋‹ค.(async await๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ๋งŒ ๋‹ค๋ฆ„)

 

โœ… Layout


React Native์—๋Š” display: block, inline-block, grid ๊ฐ™์€ ํ•ญ๋ชฉ์ด ์—†๋‹ค.

Flex box๋งŒ ์‚ฌ์šฉํ•œ๋‹ค.

 

View

1. View๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Flex Box๋‹ค.

2. Flex Direction์˜ ๊ธฐ๋ณธ๊ฐ’์€ column์ด๋‹ค.(์›น์—์„œ๋Š” ๊ธฐ๋ณธ๊ฐ’์ด row)

3. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— overflow๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด์„œ ์Šคํฌ๋กค ํ•  ์ˆ˜๋Š” ์—†๋‹ค.

4. ๋ ˆ์ด์•„์›ƒ์„ ๋””์ž์ธ ํ•  ๋•Œ 99.8% width์™€ height๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.(0.2%๋Š” ์•„์ด์ฝ˜์ด๋‚˜ ์•„๋ฐ”ํƒ€?)

๋น„์œจ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

    <View style={{ flex: 1 }}>
      <View style={{ flex: 1, backgroundColor: "tomato" }}></View>
      <View style={{ flex: 1, backgroundColor: "teal" }}></View>
      <View style={{ flex: 1, backgroundColor: "orange" }}></View>
    </View>

 

ScrollView

1. ์Šคํฌ๋กค ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

2. ScrollView๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ style์„ ์ง€์ •ํ•˜๊ณ  ์‹ถ์œผ๋ฉด style prop์ด ์•„๋‹ˆ๋ผ contentContainerStyle์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

3. ๊ฐ€๋กœ ์Šคํฌ๋กค์„ ๊ตฌํ˜„ํ•  ๋•Œ flex๋ฅผ ์ค„ ํ•„์š”๊ฐ€ ์—†๋‹ค.(overflow๊ฐ€ ๋ฐœ์ƒํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ)

4. pagingEnabled ์†์„ฑ์œผ๋กœ ์Šคํฌ๋กค์— ํƒ„๋ ฅ(sticky)์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค.(์–ด๋А์ •๋„ ์˜์—ญ์„ ๋„˜์–ด๊ฐ€์•ผ๋งŒ ์Šคํฌ๋กค์ด ๋จ)

5. showsHorizontalScrollIndicator ์†์„ฑ์œผ๋กœ indicator์˜ ํ‘œ์‹œ ์œ ๋ฌด๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.(boolean)

6. indicatorStyle ์†์„ฑ์œผ๋กœ indicator์˜ ์ƒ‰๊น”์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.(ios๋งŒ ์ ์šฉ ๊ฐ€๋Šฅ)

Dimensions

1. ์‚ฌ์šฉ์ž์˜ ํ™”๋ฉด ํฌ๊ธฐ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

const { width, height } = Dimensions.get("window");

 

 

โœ… Location API


npx expo install expo-location

 

requestForegroundPermissionsAsync

์œ„์น˜ ๊ถŒํ•œ ์š”์ฒญํ•˜๊ธฐ

  const ask = async () => {
    const permission = await Location.requestForegroundPermissionsAsync();
    console.log(permission);
  };
  useEffect(() => {
    ask();
  }, []);

 

getCurrentPositionAsync

์œ ์ € ์œ„์น˜ ์ •๋ณด ์–ป๊ธฐ

const location = await Location.getCurrentPositionAsync({ accuracy: 5 });

 

reverseGeocodeAsync(location)

์ขŒํ‘œ(latitude, longitude)๋ฅผ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ฃผ์†Œ ์ •๋ณด๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ํ•จ์ˆ˜

    const location = await Location.reverseGeocodeAsync({
      latitude,
      longitude,
    });

 

 

โœ… Platform API


ํ˜„์žฌ ์–ด๋А ํ”Œ๋žซํผ์—์„œ ๋™์ž‘ ์ค‘์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ๋Š” API

'๐Ÿ›ธ React Native' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

React Native - 26.01.20 ๊ธฐ์ค€ ์ตœ์‹  Components, API  (0) 2026.01.20
React Native - Android Studio & Xcode ํ™˜๊ฒฝ ์„ธํŒ…(m2 macOS)  (0) 2026.01.20
React Native - ๋ฐฐํฌํ•˜๊ธฐ  (0) 2026.01.19
React Native - React Native์—๋งŒ ์žˆ๋Š” CSS ์†์„ฑ  (0) 2026.01.19
React Native - React Native ์‹œ์ž‘ํ•˜๊ธฐ  (0) 2026.01.12
'๐Ÿ›ธ React Native' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • React Native - Android Studio & Xcode ํ™˜๊ฒฝ ์„ธํŒ…(m2 macOS)
  • React Native - ๋ฐฐํฌํ•˜๊ธฐ
  • React Native - React Native์—๋งŒ ์žˆ๋Š” CSS ์†์„ฑ
  • React Native - React Native ์‹œ์ž‘ํ•˜๊ธฐ
j2yonghwa
j2yonghwa
Trying to be a fullstack developer ๐Ÿš€
  • j2yonghwa
    j2yonghwa
    j2yonghwa
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (156)
      • โฐ Daily WakaTime (1)
      • ๐Ÿ–๏ธ ๋…ธ๋งˆ๋“œ์ฝ”๋” (2)
      • ๐Ÿบ Dev Setup (3)
      • ๐Ÿ”ญ Tech Info (1)
      • ๐Ÿšซ Error (1)
      • ๐Ÿ“‚ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (23)
      • ♣๏ธ Next.js 14 (10)
      • ♠๏ธ Next.js 12 (20)
      • ๐Ÿ›ธ React Native (12)
      • ๐Ÿฆ‹ TypeScript (1)
      • ๐Ÿ Python (2)
      • ๐ŸŒŠ TailwindCSS (4)
      • ๐Ÿงฉ SQL (25)
      • ๐Ÿ’Ž Prisma (5)
      • ๐ŸŒฑ MongoDB (4)
      • ๐ŸŽฏ Redis (1)
      • ๐Ÿงฌ GraphQL (2)
      • ๐Ÿ”ฅ Firebase (7)
      • ๐Ÿ’ธ Third-Party Services (2)
      • ๐Ÿ•ธ๏ธ Web (1)
      • ๐Ÿ† ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (23)
      • ๐Ÿ“™ ๋ชจ๋”ฅ๋‹ค (5)
      • ๐Ÿ“— ์ฝ”ํ…Œ ํ•ฉ๊ฒฉ์ž ๋˜๊ธฐ -JS- (0)
      • ๐Ÿ“˜ ํด๋ฆฐ์ฝ”๋“œ (0)
      • ๐Ÿฏ ๊ฟ€ํŒ ๐Ÿ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • ๊นƒํ—™
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    Next.js
    SQL
    ๋ชจ๋”ฅ๋‹ค
    next.js 12
    tailwindcss
    Prisma
    mongoDB
    dev setup
    next.js 14
    Firebase
    API
    MySQL
    react router
    PostgreSQL
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ž…๋ฌธ
    0๋ ˆ๋ฒจ
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
    ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    React Native
    Python
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
j2yonghwa
React Native - ๊ธฐ๋ณธ Layout, API
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”