์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ์ดํญ๊ณ์
- ์ฝ๋ฉ
- ์ฝ๋ฉํ ์คํธ
- ๊ฐ๋ฐ์
- ์คํ๋ง
- ChatGPT
- ๊ทธ๋ฆฌ๋์๊ณ ๋ฆฌ์ฆ
- ์ปด๊ณต
- SSE
- ์ปด๊ณต์
- ๋ฐฑ์คํ์ด
- ๊ทธ๋ฆฌ๋
- spring
- ์ปดํจํฐ๊ณตํ
- ํ๋ก ํธ์ค๋
- ํ์ด์ฌ
- ํ๋ก๊ทธ๋๋ฐ
- boj11653
- ์๊ณ ๋ฆฌ์ฆ
- ์๋ฃ๊ตฌ์กฐ
- ๋ฆฌ์กํธ๋ค์ดํฐ๋ธ
- ๋ฐฑ์๋
- ๋ฆฌ์กํธ
- ๋ชจ๋ฐ์ผ์ฑํ๋ก๊ทธ๋๋ฐ
- ์น๊ฐ๋ฐ๊ธฐ๋ก
- ์ฐ์ ์์ํ
- ๋ฐฑ์ค
- ๋ฐฑ์ค1436
- ๋จ์ํ ์คํธ
- ์น๊ฐ๋ฐ
- Today
- Total
๐ป๐ญ๐ง๐
[React Native] 02. ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ๊ธฐ๋ณธ ๋ค์ง๊ธฐ -1 ๋ณธ๋ฌธ
[React Native] 02. ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ๊ธฐ๋ณธ ๋ค์ง๊ธฐ -1
adorableco 2023. 8. 2. 06:24์ด๋ฒ ๊ธ์์๋ 02-1 ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ํ๋ ์์ํฌ์ ์๋ ์๋ฆฌ / 02-2 JSX ๊ตฌ๋ฌธ ํ๊ตฌํ๊ธฐ ํํธ๋ฅผ ๊ณต๋ถํด๋ด ๋๋ค ...
1. ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ํ๋ก์ ํธ ๋ง๋ค๊ธฐ
npx react-native init ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ช
--template react-native-template-typescript
2. npm start
โป ์ด๋ ์๋ง์ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์์ npm start๋ฅผ ์คํํ์ง ์์ผ๋ฉด ์๋์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ค.
npm ERR! code ENOENT
npm ERR! syscall open
npm ERR! path /Users/parkseyeon/React-Native/package.json
npm ERR! errno -2
npm ERR! enoent Could not read package.json: Error: ENOENT: no such file or directory, open '/Users/parkseyeon/React-Native/package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
๊ทธ๋ฌ๋ฏ๋ก ๋ค๋ฅธ ๊ฒฝ๋ก์ ์์นํด ์๋ค๋ฉด ๋ช ๋ น์ด cd ๋ฅผ ์ด์ฉํด ์ฌ๋ฐ๋ฅธ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ ๋ค์ npm start ๋ช ๋ น์ด๋ฅผ ์คํํ๋ค.
3. ์๋๋ก์ด๋ ๊ฐ๋ฐ ์ โก๏ธ npm run android / ios ๊ฐ๋ฐ ์ โก๏ธ npm rum ios
โป npm ์ ์คํํ ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ๋ฐ๋ฅธ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์ ์์นํด์ผ ํจ
๋ฌผ๋ฆฌ DOM ๊ณผ ๊ฐ์ DOM
DOM : Document Object Model
๋ฌผ๋ฆฌ DOM ๊ตฌ์กฐ : ์น ๋ธ๋ผ์ฐ์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๊ฐ ์์ฑํ๋ ์ค์ DOM ๊ตฌ์กฐ
๊ฐ์ DOM ๊ตฌ์กฐ : ๋ฆฌ์กํฐ ์ฝ๋๊ฐ ์์ฑํ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ๊ตฌ์กฐ
๊ฐ์ DOM ๊ตฌ์กฐ โก๏ธ ๋ฌผ๋ฆฌ DOM ๊ตฌ์กฐ : ๋ฆฌ์กํธ๊ฐ ๋ ๋๋งํ๋ ๊ฒ
๋ธ๋ฆฌ์ง ๋ฐฉ์ ๋ ๋๋ง
UI ์ค๋ ๋์ ์๋ฐ์คํฌ๋ฆฝํธ ์ชฝ ์ค๋ ๋๊ฐ ๋ฉ์์ง ํ ๋ฐฉ์์ผ๋ก ๋ ๋๋ง๊ณผ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ์
โ UI ์ค๋ ๋๋ ์ฌ์ฉ์์ ๋ฐ์์ ์๋ฐ์คํฌ๋ฆฝํธ ์ชฝ ์ค๋ ๋์ ์ด๋ฒคํธ ํํ๋ก ๋๊น
JavaScriptCore (์๋ฐ์คํฌ๋ฆฝํธ ์์ง) ๋์ โ C++ ์ธ์ด๋ก ๊ตฌํ๋จ
โก๏ธ ์๋๋ก์ด๋์์๋ JNI(Java Native Interface) ๋ฐฉ์์ผ๋ก ์ฐ๊ฒฐ
โก๏ธ iOS์์๋ FFI(Foreign Functioin Interface) ๋ฐฉ์์ผ๋ก ์ฐ๊ฒฐ
๋ฌผ๋ฆฌ DOM ๊ฐ์ฒด ์์ฑ (์๋ฐ์คํฌ๋ฆฝํธ)
const pElement = document.createElement('p')
pElement.innerText = 'Hello JavaScript world!'
๊ฐ์ DOM ๊ฐ์ฒด ์์ฑ (๋ฆฌ์กํธ ํ๋ ์์ํฌ/ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ๋ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ์ DOM ๊ฐ์ฒด ์์ฑ)
const pElement = React.createElement('p', null, 'Hello React world!')
์ด ๊ฐ์ DOM ๊ฐ์ฒด๋ฅผ ๋ฌผ๋ฆฌ DOM ๊ฐ์ฒด๋ก ๋ณํํ์ฌ ํ๋ฉด์ ํ์ํ๋ ค๋ฉด
import ReactDOM from 'react-dom'
ReactDOM.render(pElement, document.body)
๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ๋ ๋๋ฌ๋ ๋ค์ดํฐ๋ธ์์ ๋์ํ๋ฏ๋ก
export default function App(){
const textElement = React.createElement(Text, null 'Hello world!')
return textElement
}
๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ๊ฐ๋ฐ์์ ์ฌ์ฉํ๋ ๋ช ๋ น
npm i : package.json ํ์ผ์ ๋ช ์๋ ํจํค์ง๋ฅผ node_modules ๋๋ ํฐ๋ฆฌ์ ์ค์น
npx pod-install : pod ํ๋ก๊ทธ๋จ์ ์คํํ์ฌ ์๊ฒฉ์ง ์ ์ฅ์์์ ํ์ํ ํจํค์ง๋ฅผ ๋ด๋ ค๋ฐ์
npm start : ๋ฉํธ๋ก ์๋ฒ ์คํ (์๋ฎฌ๋ ์ดํฐ์ ์ค์น๋ ์ฑ์ด ์ฒ์ ์คํ๋ ๋ ๋ฉํธ๋ก ์๋ฒ์์ ES5 ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ๋ด๋ ค๋ฐ์์ผํ๋ฏ๋ก
ํ๋ก์ ํธ ์ด๊ธฐํ ๋ช ๋ น
cd android
./gradlew clean : ./gradew installDebug ๋ช ๋ น์ผ๋ก ์์ฑ๋ ์์ ํ์ผ์ ์ง์
rm -rf .gradle (๋งฅ) : ๋น๋ํ ์ฑ ์ญ์
cd ios
xcodebuild clean : Xcode๊ฐ ์์ฑํ ์์ ํ์ผ ์ง์
pod deintegrate : npx pod-install ๋ช ๋ น์ผ๋ก ๋ด๋ ค๋ฐ์ ํจํค์ง๋ฅผ ์ง์
์ฝ๋ ๋๋ฒ๊น
App.tsx ํ์ผ์์ console.log() ์ฌ์ฉ
JSX = JavaScript + XML
JSX ๊ตฌ๋ฌธ์ด ์๋ ํ์ ์คํฌ๋ฆฝํธ ์ฝ๋๋ ํ์ฅ์๊ฐ .tsx ์ฌ์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์๋์ ๊ฐ์ import ๋ฌธ์ด ํ์ํ๋ค.
import React from 'react'
โ JSX ์ฝ๋ ์์์๋ ์คํ๋ฌธ(ex. if๋ฌธ) ์ ์ฌ์ฉํ ์ ์๊ณ ํํ์๋ง ์์ฑํ ์ ์๋ค.
โก๏ธ if ๋ฌธ์ JSX ๋ฌธ ๋ฐ๊นฅ์ ๋๊ฒ ํ๋ฉด ๋๋ค.
โก๏ธ if ๋ฌธ์ ๋จ์ถ ํ๊ฐ ํํ๋ก ๊ตฌํํ๋ฉด ๋๋ค. ex) {isLoading && <Text>Loading...</Text>}
โก๏ธ JSX ๋ฌธ์ ๋ณ์์ ๋ด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค. ๐ ๋ฐฐ์ด์ ์ฌ๋ฌ ๊ฐ์ JSX ๋ฌธ์ ๋ด์ ์๋ ์์
โ ๋ฐฐ์ด์ ์ฌ๋ฌ ๊ฐ์ JSX ๋ฌธ์ ๋ด์ ๋๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ์ ์์ ์ปดํฌ๋ํธ ํํ๋ก ๋ง๋ค์ด์ผ ํ๋ค.
export default functioin App(){
const children = [
<Text>Hello world!</Text>
<Text>Hello world!</Text>
<Text>Hello world!</Text>
]
return children <- ๋ถ๊ฐ๋ฅ!!
return {children} <- ๋ถ๊ฐ๋ฅ!!
return <SafeAreaView>{children}</SafeAreaView> <- ๊ฐ๋ฅ!!
โ JSX ์ฝ๋ ๋ด์ ๋ชจ๋ ์ค์ React.createElement ํธ์ถ ์ฝ๋๋ก ๋ณํ๋ ์ ์์ด์ผ ํ๋ค.
'๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ์ฑ ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React Native] 03-2 View ์ปดํฌ๋ํธ์ CSS ๋ฐ์ค ๋ชจ๋ธ (0) | 2023.08.07 |
---|---|
[React Native] 03-1 style ์์ฑ๊ณผ StyleSheet API ์ดํดํ๊ธฐ (0) | 2023.08.05 |
[React Native] 02-4 ์ปดํฌ๋ํธ์ ์ด๋ฒคํธ ์์ฑ ์ดํดํ๊ธฐ (0) | 2023.08.05 |
[React Native] 02-3. ์ปดํฌ๋ํธ์ ์์ฑ ์ดํดํ๊ธฐ (0) | 2023.08.04 |
[React Native] 01. ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ๊ฐ๋ฐ ํ๊ฒฝ ๊ฐ์ถ๊ธฐ (0) | 2023.08.01 |