React Native Study - ๊ธฐ์ดˆ๐Ÿ“

Mudiยท2023๋…„ 9์›” 5์ผ
0

Today I Learned

๋ชฉ๋ก ๋ณด๊ธฐ
16/18
post-thumbnail
post-custom-banner

๐Ÿ“š ๊ณต๋ถ€ ๋ชฉ์ 

๊ฐœ๋ฐœ ๊ณต๋ถ€๋ฅผ ํ•˜๋‹ค๋ณด๋‹ˆ ์•ฑ๋„ ๋งŒ๋“ค์–ด๋ณด๊ณ  ์‹ถ์€ ์ƒ๊ฐ์ด ๋“ค์–ด์„œ
๋น„๊ต์  ์ ‘๊ทผ์ด ์‰ฌ์šด React Native๋ฅผ ๊ณต๋ถ€ํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.
React Native๋Š” ๋ฆฌ์•กํŠธ ํŒ€์—์„œ ๋งŒ๋“  ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ๊ธฐ์กด์— ์‚ฌ์šฉํ–ˆ๋˜ ๋ฆฌ์•กํŠธ์˜ ๊ธฐ๋Šฅ์„ ์ผ๋ถ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ์ƒˆ๋กœ์šด ์–ธ์–ด๋ฅผ ๋ฐฐ์šฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. (React Native์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋งŒ ๊ณต๋ถ€ํ•˜๋ฉด ๋œ๋‹ค.)

์ €๋Š” Nomad coder์™€ Udemy ๊ฐ•์˜๋ฅผ ๋ณด๋ฉฐ ๊ณต๋ถ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๐Ÿ˜Š

React Native

๊ธฐ๋ณธ ์„ค๋ช…

  • ๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ๋Š” ์ผ์ข…์˜ ๋ฒˆ์—ญ๊ธฐ ๊ฐ™์€ ์—ญํ• ์ž…๋‹ˆ๋‹ค.
    => JSX๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๊ฐ€ ๊ฐ ์šด์˜์ฒด์ œ(iOS ๋˜๋Š” android)์— ๋งž๋Š” ์–ธ์–ด๋กœ ์ปดํŒŒ์ผ ๋˜์–ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ์˜ ๋‚ด์žฅ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.(<View>, <Text> ๋“ฑ)

  • ๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ ๋‚ด์žฅ ์ปดํฌ๋„ŒํŠธ๋Š” ๊ฐ ํ”Œ๋žซํผ์— ๋งž๋Š” ์š”์†Œ๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งคํ•‘ํ•˜๊ณ  ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์œ„ํ•œ HTML element์™€ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€๋„ ํ•จ๊ป˜ ์ฐธ๊ณ ํ•ด๋ณด์„ธ์š”!

Web BrowserReact Native JSXAndroidiOS
<div><View>android.ViewUIView
<input><TextInput>EditTextUITextField

์ฝ”๋“œ ๋™์ž‘ ์›๋ฆฌ

RN์—์„œ๋Š” JSX์š”์†Œ ์™ธ์˜ JavaScript ๋กœ์ง์€ ๋ณ„๋กœ๋„ ์ปดํŒŒ์ผ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ๊ฐ€ ํ˜ธ์ŠคํŠธํ•œ ๋Œ€๋กœ JavaScript ์Šค๋ ˆ๋“œ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

  1. ์ด๋ฒคํŠธ๊ฐ€ ์ด๋ฃจ์–ด์ง(์ด๊ฒƒ์„ ๋„ค์ดํ‹ฐ๋ธŒ์—์„œ ์ˆ˜์ง‘)
  2. ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”์‹œ์ง€๋กœ ๋งŒ๋“ค์–ด์ ธ์„œ ์ „์†ก๋จ (โ€™๋ฒ„ํŠผ์ด ๋ˆŒ๋ ธ์Šต๋‹ˆ๋‹คโ€™)
  3. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ทธ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์ž‘๋™ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋จ
  4. Javascript์—์„œ native method๋ฅผ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ UI ๋ณ€๊ฒฝ์š”์ฒญ์„ ๋ณด๋ƒ„
  5. ์šด์˜์ฒด์ œ์— ๋งž๋Š” ๋„ค์ดํ‹ฐ๋ธŒ์–ธ์–ด๋กœ ๊ทธ ๋ช…๋ น์ด ๋ณ€๊ฒฝ
  6. ๋””๋ฐ”์ด์Šค์—์„œ ๊ทธ๊ฒŒ ์‹คํ–‰ ๋จ
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์œ„ํ•ด ์“ฐ๋Š” ๋ ˆ์ด์–ด์ผ ๋ฟ์ด๋‹ค!

Expo ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ ์‹œ์ž‘ํ•˜๊ธฐ

RN ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
React CLI์™€ Expo CLI

๋‘˜ ๋‹ค ๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ํ…Œ์ŠคํŒ… ๊ธฐ๊ธฐ ๋ฐ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์— React Native ์•ฑ์„ ์‹คํ–‰ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ React Native์•ฑ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์–ด ์•ฑ์Šคํ† ์–ด์— ์•ฑ์„ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

Expo CLI

  • Expo CLI๋Š” ์„œ๋“œํŒŒํ‹ฐ์„œ๋น„์Šค๋กœ ๋ฌด๋ฃŒ ์„œ๋น„์Šค
  • Expo์—์„œ ์ œ๊ณตํ•˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ข€ ๋” ์ˆ˜์›”ํ•œ ์•ฑ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅ
  • ๊ทธ๋ฆฌ๊ณ  ์–ธ์ œ๋“ ์ง€ Expo CLI ๋ฒ„์ „์„ ๊ทธ๋งŒ ๋‘˜ ์ˆ˜ ์žˆ๋‹ค.(React Native CLI๋กœ ์ „ํ™˜ ๊ฐ€๋Šฅ)

React CLI

  • Expo CLI๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ธฐ ์ „์— React NativeํŒ€์ด ์ œ๊ณตํ•œ ํˆด
  • ๊ธฐ์ดˆ์ ์ธ React Native ๊ฐœ๋ฐœ ์„ค์ •์„ ์ œ๊ณต
  • Expo CLI๋ณด๋‹ค๋Š” ์‚ด์ง ๋ฒˆ๊ฑฐ๋กญ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

๐Ÿ“Œ CLI (Command Line Interface) : ๋ช…๋ น ํ–‰ ์ธํ„ฐํŽ˜์ด์Šค

์ œ๊ฐ€ ๋ฐฐ์šฐ๊ณ  ์žˆ๋Š” ๊ฐ•์˜์—์„œ๋Š” Expo๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

expo cli ๋‹ค์šด๋กœ๋“œํ•˜๊ธฐ

$ sudo npm install -g expo-cli
$ expo init myapp
$ expo login
$ npm start

๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ๋„์šฐ๊ธฐ

android

  1. android studio ์‹คํ–‰
  2. More Actions >> Virtual Device Manager >> ์‹คํ–‰ ๋ฒ„ํŠผ ํด๋ฆญ

ios

  1. Xcode ์‹คํ–‰
  2. ์ƒ๋‹จ Preferences ๋ฉ”๋‰ด >> locations ํƒญ >> ๋ฒ„์ „ ์„ ํƒ ๋œ ๊ฒƒ ํ™•์ธ ํ›„ i ๋กœ ์‹คํ–‰..(๊ทธ๋ƒฅ i ๋ˆŒ๋Ÿฌ๋„ ๋  ๊ฒƒ ๊ฐ™์Œ..)

์˜ค๋Š˜์€ ๊ธฐ๋ณธ์ ์œผ๋กœ RN์ด ๋ฌด์—‡์ธ์ง€์™€ Expo๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ์ •๋ฆฌํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ์€ ๋ณธ๊ฒฉ์ ์œผ๋กœ React Native๊ฐ€ ๊ธฐ์กด React์™€ ๋ฌด์—‡์ด ๋‹ค๋ฅธ์ง€์— ๋Œ€ํ•ด์„œ ๋น„๊ตํ•ด๋ณด๋ฉฐ React Native๋ฅผ ํ•™์Šตํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๐Ÿญ

post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€