-
728x90๋ฐ์ํ
๋ ์ง : 2023-02-01
Chapter 1 ์ ๋ฆฌ
React Native์ ์ฅ์
- Cross platform
- Resources
Component ๋ ?
block ์ด๋ผ๊ณ ์ดํดํ๋ฉด ์ฝ๋ค. Component๋ stateful์ stateless ๋๊ฐ์ง๋ก ๋๋์ด์ง๋ค.
Stateful
์ํ ์ ์ง
class HelloWorld extends React.Component { constructor() { super() this.state = { name : 'Chris'} } render() { return <componentName /> } }
Stateless
์๋ช ์ฃผ๊ธฐ method์ ์ฐ๊ฒฐ X -> state ์ ์ง X
๋ฐ๋ผ์, ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์์ฑ (props)๋ก ๋ฐ์์ ๋์คํ๋ ์ด ํ๋ค
-> ์ฃผ๋ก ์ด ๋ฐฉ์์ผ๋ก ์นํ์ด์ง๋ฅผ ์์ฑํ์๋ค.
const HelloWorld = () => { <Component /> }
Example
import React from 'react' import { View, Text, StyleSheet } from 'react-native' class HelloWorld extends React.Component { constructor() { // ์์ฑ์์์ name ์์ฑ์ ๊ฐ์ง ๊ฐ์ฒด๋ฅผ state ๋ก ์ค์ this.state = { name: 'React Native in Action' } } componentDidMount() { // ๋ผ์ดํ์ฌ์ดํด์์ ์ต์ข ์ผ๋ก ์คํ๋๋ ๋ฉ์๋ console.log('mounted'); } render () { return ( <View style={styles.container}> <Text>{this.state.name}</Text> </View> ) } } const styles = StyleSheet.create({ container: { marginTop: 100, flex: 1 } })
์ปดํฌ๋ํธ๊ฐ ์ฒ์ ๋ก๋ฉ๋ ๋, ์์ฑ์๋ฅผ ํตํด name ์์ฑ์ ๊ฐ์ง ๊ฐ์ฒด๋ฅผ ์ปดํฌ๋ํธ ์ํ(state)๋ก ์ง์
๋ฐ์ดํฐ๊ฐ ๋์ ์ผ๋ก ๋ณํด์ผ ํ๋ ๊ฒฝ์ฐ๋ props ๋ state๋ก ๋ฐ์์ผ ํ๋ค.
this.setState({ name : 'Sheep' })
๋ฆฌ์กํธ ์๋ช ์ฃผ๊ธฐ
๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ํด๋์ค๊ฐ ์์ฑ๋๋ฉด์ ๋ฉ์๋๋ค์ด ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋์ ์ฐ๊ฒฐ. constructor, componentDidMount, render ๋ฑ์ด ์๋๋ฐ ๋ ์์ธํ๊ฑด 2์ฅ์์ ๋ค๋ฃฌ๋ค๊ณ ํ๋ค.
์๋ช ์ฃผ๊ธฐ ๋ฉ์๋
- ๋๊ธฐํ
- ์ปดํฌ๋ํธ state ๊ด๋ฆฌ ์ง์
- ํ์์ ๋ฐ๋ผ ๋จ๊ณ๋ณ๋ก ์ฝ๋๊ฐ ์คํํ๋๋ก ์ง์
-> render ๋๊ธฐ ์ ์ ๋ฏธ๋ฆฌ ๋ถ๋ฌ์์ผ ํ๋ ๊ฒ๋ค ์ฒ๋ฆฌํ๋ ์ฝ๋๊ฐ์ ์ํ๋ฅผ ๋งํ๋ ๊ฒ ๊ฐ์ - render ๋ ๊ผญ ์์ด์ผ ํ๋ฉฐ, ๋ค๋ฅธ ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋๋ ์ ํ์ ์ผ๋ก ํ์ํจ
๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ์ ์๋ ๋ฐฉ์ ์ดํด
JSX
JSX๋ XML์ฒ๋ผ ๋ณด์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ตฌ๋ฌธ ํ์ฅ์ด๋ค. ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค ๋ JSX ๊ฐ ์์ด๋ ๋์ง๋ง, JSX๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฆฌ์กํธ์ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ํ๋ก์ ํธ์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์๊ฐ ํจ์ฌ ๋ ์ฌ์์ง๋ค๊ณ ํ๋ค.
jsx ์๊ฐ ํ์ด์ง : https://reactjs.org/docs/introducing-jsx.html
์ค๋ ๋ ์ฒ๋ฆฌ
๋ค์ดํฐ๋ธ ๊ธฐ๊ธฐ์ ํต์ ํ๋ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ธฐ๋ฅ์ ๋ถ๋ฆฌ๋ ๋ณ๋์ ์ค๋ ๋๋ก ์ฒ๋ฆฌ๋๋ค.
๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋์์ ๋ค์ดํฐ๋ธ ํ๋ซํผ๊ณผ ์ธํฐ๋ ์ ์์ ๋ณ๋์ ์ค๋ ๋๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ธํฐํ์ด์ค์ ์ ๋๋ฉ์ด์ ๊ตฌ๋์ด ์์ฐ์ค๋ฝ๊ฒ ๋ณด์ด๋ ๊ฒ์!!!
๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ์ฑ ๋ด์์ ์คํ๋๋ ์ค๋ ๋๋ API ํธ์ถ, ํฐ์น ์ด๋ฒคํธ, ์ธํฐ๋ ์ ์ ์ฒ๋ฆฌ
๋ค์ดํฐ๋ธ ๋ด๋ถ์ ๋ณํ๊ฐ ํ์ํ ๋์๋ ์ผ๊ด์ฒ๋ฆฌ ํ ๋ค์ดํฐ๋ธ์ ์ ๋ฌ
๋ฆฌ์กํธ
- ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ๋ ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ๋ค ๐งธ
- ๋ฆฌ์กํธ๋ ๋ณธ๋ ์น ์ฑ ์์ฑ + ์น ๋ฌธ์ ํด๊ฒฐ์ ์ํ ํด์ด์์ง๋ง ๋๋๋ง ์๋์ ์ ์ง, UI ๋ก ์ธํด ๋ง์ ์ฃผ๋ชฉ์ ๋ฐ์
- ๋ฆฌ์กํธ๋ ๊ฐ์ DOM ์ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ด ๋จ์ด์ง๋ ๊ธฐ์กด DOM์ ๋์ฒด
๊ทธ๋ฌ๋๊น, ๊ธฐ์กด์ DOM์์ ์๋น๋น๋น ์ฒ๋ฆฌ -> ๋๋ฆผ ์ด๋ฌ๋๋ฐ
๋ฆฌ์กํธ๋ ๊ฐ์ DOM์์ ์ผ์ผ์ผ์ผ ์ฒ๋ฆฌํ๊ณ ๊ฒฐ๊ณผ๋ณธ๋ง ์ค์ DOM์๋ค๊ฐ ๋น๊ตํด์ ๋ค๋ฅธ์ ์ ๋ฎ์ด ์์ฐ๊ธฐ ๋๋ฌธ์ DOM ์ฐ์ฐ์ด ์ค์ด๋ฆ
๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ
๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ ์์ฒญ ๊ฐ์กฐํ๋๋ฐ ์ด๋ ๊ฒ๋๋ฉด ๊ตฌ์กฐ๊ฐ ๋จ์ํด์ง
๋ํ (์ฝ๋ ๋ฐฐ๊ต)
๋ฆฌ์กํธ๋ ์ฝ๋๋ฅผ ๋น๊ตํ๊ณ ๋ค์ดํฐ๋ธ ์ปดํฌ๋ํธ์ ๋ฐ์ํจ (UI ์ ๋ค์ดํฐ๋ธ ์ปดํฌ๋ํธ๋ฅผ ๊ฐฑ์ ํ๋ ์ค๋ ๋์ ์ต์ํ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋ ์ฌ์ฉ๋จ)
๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ์ ๊ฐ์
์ฑ ์์ ๊ธธ๊ฒ ์์ ํ๋๋ฐ ๊ฐ๋จํ๊ฒ ์์ฝํ๋ฉด,
- ์คํ์์ค
- crossplatform
- ์ฑ๋ฅ
- ๋ฐ์ดํฐ ๋จ๋ฐฉํฅ ํ๋ฆ (MVC framework์๋ ๋ค๋ฅด๊ฒ React native ๋ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์)
์ด๊ฒ ๋ฌด์จ ์๋ฆฐ๊ฐ ํ๋๋ Data -> Home -> Parent -> Children ์ด ๊ตฌ์กฐ ์๊ธฐ์๋ค
์ด๊ฒ๋๋ฌธ์ ํ์ ๊ฐ์๊ฑฐ ๋ง๋ค ๋ ์ญ์ผ๋ก ๋ฐ์ดํฐ ๋ณด๋ด๋๊ฑธ ํ์ฐธ ์ด๋ ค์ํ์๋๋ฐ ์ด๊ฒ ์ฅ์ ์ด์๋ค๋..๋ค์์ ์์ธํ ๋ค๋ฃฌ๋ค๋ ์ข ์ดํดํด๋ณด๊ณ ์ถ๋ค - ํธ๋์คํ์ผ๋ง(transpilation)
๋ฐ๋ฒจ..ํญ์ ํ๋ก์ ํธ ์์ฑํ ๋ ์ต์ ์ babel ์ด๋ฐ๊ฑธ ๋ดค์๋๋ฐ ์ด๊ฒ ํธ๋์คํ์ผ๋ง๊ณผ ๊ด๋ จ๋๊ฑฐ๋ผ ํ๋ค
ํธ๋์คํ์ผ๋ง์ transpiler๊ฐ ํน์ ํ๋ก๊ทธ๋จ ์ธ์ด๋ก ์์ฑ๋ ์ฝ๋๋ฅผ ๋ค๋ฅธ ์ธ์ด์ ์ฝ๋๋ก ๋ฒ์ญํด์ฃผ๋ ๊ฒ์ ๋ปํ๋๋ฐ React Native๋ ํธ๋์คํ์ผ๋ง ๊ณผ์ ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด์ฅ๋ Babel (๋ฐ๋ฒจ)์ ์ฌ์ฉํ๋ค. ๋ฐ๋ฒจ์ ํธ๋์คํ์ผ๋ง ์คํ์์ค ๋๊ตฌ๋ก ์ต์ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ธ์ด ๊ธฐ๋ฅ๊น์ง ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋๋ก ๋ณํํด์ค๋ค๊ณ ํจ
๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ์ ์ฝ์
- ์์ํ iOS๋ ํ์ด๋ธ๋ฆฌ๋ ๋ฐฉ์์ธ ์ฝ๋ฅด๋๋ฐ์ ๋นํด ๋ถ์กฑํ ๋ถ๋ถ์ด ์์
- ๋ฆฌ์กํธ๋ฅผ ๋ชจ๋ฅด๋ฉด ์์ ์๋กญ๊ฒ ๋ฐฐ์์ผํจ
๊ธฐ๋ณธ ์ปดํฌ๋ํธ ๋ง๋ค์ด ์ฌ์ฉํ๊ธฐ
View, Text , Image ๋ฑ๊ณผ ๊ฐ์ ๊ธฐ๋ณธ์ ์ธ ์ปดํฌ๋ํธ ์ ๊ณต. ๋ธ๋ก ์กฐ๋ฆฝ์ฒ๋ผ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํด ์๋ก์ด ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค ์ ์์
ES5๋ก ๋ง๋ ์ปดํฌ๋ํธ๋ ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ ๋์๋ ์ค๋ฅ๊ฐ ๋ฏธ์น๋ฏ์ด ๋ฌ์๋๋ฐ, ์ฌ๊ธฐ์๋ ์ง์ํ๋ผ๊ณ ๋์ด์๋ค.
์์ ํ๋ก์ ํธ ๋ง๋ค๊ธฐ ์ฑํฐ๋ ์ฒซ ํ๊ฒฝ ์ธํ ์ ๋ํ ๋ด์ฉ๋ค์ ์์ด์ ๋ค๋ฅธ ๋ธ๋ก๊ทธ๋ ๊ณต์ ํ์ด์ง๋ฅผ ๋ณด๊ณ ์ฐธ๊ณ ํด์ผ ํ ๊ฒ ๊ฐ์์ ๋ฐ๋ก ๊ธฐ๋กํ๊ฒ ๋ค.
๋ฐฐ์ด์ ๐งธ
SSAFY์์ ํ๋ก์ ํธ๋ง ์งํํ ๋์๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋ง๋ค๊ธฐ ๊ธ๊ธํด์ ์ด๋ก ๋ณด๋ค ์ง์ ๋ถ๋ช์ณ์ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด๋๋ค. ์น์ด๋ค ๋ณด๋๊น ์ฌ์ด๋ ์ดํํธ๋ ๋ฐ๋ก ๋ณด์ด๊ณ ๋ด๊ฐ ์ฌ์ฉํ ์ฝ๋๊ฐ ์ ํํ ๋ญ์ง๋ ๋ชฐ๋ผ๋ ๋์ถฉ ์ด๋ฐ๊ฑธ ํ๋ค,, ์ ๋๋ง ์๊ณ ์์ด๋ ๋์ํ์ง๋ง ํ์คํ ์ด๋ฐ ๋ฐฐ๊ฒฝ์ง์์ ๊ฐ์ง๊ณ ๊ณต๋ถํ๋ค๋ฉด ๋ ์ข์์ ๊ฒ ๊ฐ๋ค. ๋ญ๊ฐ ์ด๋ก ์ ๋ค๋ฆ๊ฒ ๋ฐฐ์ฐ๊ธฐ ์์ํ๋๊น ๋๋ฆ ์ํ๊ณ ์๋ค๊ณ ์๊ฐํ๋ ํ๋ก ํธ๋ถ์ผ๋ ๋ด๊ฐ ๊ทธ๋์ ์ผ๋ง๋ ์๋์ ์ผ๋ก ๊ฐ๋ฐํ๊ณ ์์๋์ง ๊นจ๋ซ๊ฒ ๋๋๊ฒ ๊ฐ๋ค.
728x90๋ฐ์ํ'๐ STUDY > ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ์ธ ์ก์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
00. ๋ถ๋ฌ๋ ์์ (0) 2023.02.01 ๋๊ธ