๊ฐ๋ฐ ๊ณต๋ถ๋ฅผ ํ๋ค๋ณด๋ ์ฑ๋ ๋ง๋ค์ด๋ณด๊ณ ์ถ์ ์๊ฐ์ด ๋ค์ด์
๋น๊ต์ ์ ๊ทผ์ด ์ฌ์ด React Native๋ฅผ ๊ณต๋ถํ๊ธฐ๋ก ํ์ต๋๋ค.
React Native๋ ๋ฆฌ์กํธ ํ์์ ๋ง๋ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์
ํ๋ ์์ํฌ์
๋๋ค.
๊ทธ๋์ ๊ธฐ์กด์ ์ฌ์ฉํ๋ ๋ฆฌ์กํธ์ ๊ธฐ๋ฅ์ ์ผ๋ถ ์ฌ์ฉํ ์ ์๊ณ , ์๋ก์ด ์ธ์ด๋ฅผ ๋ฐฐ์ฐ์ง ์์๋ ๋๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. (React Native์์ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ๋ง ๊ณต๋ถํ๋ฉด ๋๋ค.)
์ ๋ Nomad coder์ Udemy ๊ฐ์๋ฅผ ๋ณด๋ฉฐ ๊ณต๋ถํ์์ต๋๋ค. ๐
๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ๋ ์ผ์ข
์ ๋ฒ์ญ๊ธฐ ๊ฐ์ ์ญํ ์
๋๋ค.
=> JSX๋ก ์์ฑ๋ ์ฝ๋๊ฐ ๊ฐ ์ด์์ฒด์ (iOS ๋๋ android)์ ๋ง๋ ์ธ์ด๋ก ์ปดํ์ผ ๋์ด ๋์ํฉ๋๋ค.
๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ์ ๋ด์ฅ ์ปดํฌ๋ํธ๋ฅผ ํ์ฉํ๋ฉด ํธ๋ฆฌํ๊ฒ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํฉ๋๋ค.(<View>
, <Text>
๋ฑ)
๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ๋ด์ฅ ์ปดํฌ๋ํธ๋ ๊ฐ ํ๋ซํผ์ ๋ง๋ ์์๋ก ์ปดํฌ๋ํธ๋ฅผ ๋งคํํ๊ณ ์ปดํ์ผ๋ฉ๋๋ค. ๊ธฐ์กด ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์ํ HTML element์ ์ด๋ป๊ฒ ๋ค๋ฅธ์ง๋ ํจ๊ป ์ฐธ๊ณ ํด๋ณด์ธ์!
Web Browser | React Native JSX | Android | iOS |
---|---|---|---|
<div> | <View> | android.View | UIView |
<input> | <TextInput> | EditText | UITextField |
RN์์๋ JSX์์ ์ธ์ JavaScript ๋ก์ง์ ๋ณ๋ก๋ ์ปดํ์ผ ๋์ง ์์ต๋๋ค.
๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ๊ฐ ํธ์คํธํ ๋๋ก JavaScript ์ค๋ ๋์์ ์คํ๋ฉ๋๋ค.
- ์ด๋ฒคํธ๊ฐ ์ด๋ฃจ์ด์ง(์ด๊ฒ์ ๋ค์ดํฐ๋ธ์์ ์์ง)
- ์ด๋ฒคํธ์ ๋ํ ๋ฐ์ดํฐ๊ฐ ๋ฉ์์ง๋ก ๋ง๋ค์ด์ ธ์ ์ ์ก๋จ (โ๋ฒํผ์ด ๋๋ ธ์ต๋๋คโ)
- ์๋ฐ์คํฌ๋ฆฝํธ์์ ๊ทธ ์ด๋ฒคํธ์ ๋ํ ์๋ ์ฝ๋๊ฐ ์คํ๋จ
- Javascript์์ native method๋ฅผ ํธ์ถํ๊ฑฐ๋ UI ๋ณ๊ฒฝ์์ฒญ์ ๋ณด๋
- ์ด์์ฒด์ ์ ๋ง๋ ๋ค์ดํฐ๋ธ์ธ์ด๋ก ๊ทธ ๋ช ๋ น์ด ๋ณ๊ฒฝ
- ๋๋ฐ์ด์ค์์ ๊ทธ๊ฒ ์คํ ๋จ
- ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด ์ฐ๋ ๋ ์ด์ด์ผ ๋ฟ์ด๋ค!
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๋ก ์์ํฉ๋๋ค.
$ sudo npm install -g expo-cli
$ expo init myapp
$ expo login
$ npm start
android
- android studio ์คํ
- More Actions >> Virtual Device Manager >> ์คํ ๋ฒํผ ํด๋ฆญ
ios
- Xcode ์คํ
- ์๋จ Preferences ๋ฉ๋ด >> locations ํญ >> ๋ฒ์ ์ ํ ๋ ๊ฒ ํ์ธ ํ i ๋ก ์คํ..(๊ทธ๋ฅ i ๋๋ฌ๋ ๋ ๊ฒ ๊ฐ์..)
์ค๋์ ๊ธฐ๋ณธ์ ์ผ๋ก RN์ด ๋ฌด์์ธ์ง์ Expo๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์ ์์ํ๋ ๊ฒ๊น์ง ์ ๋ฆฌํด๋ณด์์ต๋๋ค.
๋ค์์ ๋ณธ๊ฒฉ์ ์ผ๋ก React Native๊ฐ ๊ธฐ์กด React์ ๋ฌด์์ด ๋ค๋ฅธ์ง์ ๋ํด์ ๋น๊ตํด๋ณด๋ฉฐ React Native๋ฅผ ํ์ตํด๋ณด๊ฒ ์ต๋๋ค.