๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿš€ Development/React Native

React Native ๊ธฐ๋ณธ ์ฝ”๋“œ(Hellow World ์‹คํ–‰ ํ™”๋ฉด ์ถœ๋ ฅํ•˜๊ธฐ)

by Jay Din 2023. 6. 15.
728x90
๋ฐ˜์‘ํ˜•
๋ฐ˜์‘ํ˜•

React Native ๊ธฐ๋ณธ ์ฝ”๋“œ(Hellow World ์‹คํ–‰ ํ™”๋ฉด ์ถœ๋ ฅํ•˜๊ธฐ)

// index.js
import {AppRegistry} from 'react-native';
import App from './App';
import {name as appName} from './app.json';

AppRegistry.registerComponent(appName, () => App);

index.js์—์„œ AppRegistry. registerComponent ์•ฑ๋„ค์ž„์— ์•ฑ ํŒŒ์ผ์„ ๋“ฑ๋กํ•ด์„œ ์ฒ˜์Œ ์‹คํ–‰๋˜๋Š” ์ง„์ž…์ ์„ ์„ค์ •ํ•œ๋‹ค.

App.jsํŒŒ์ผ์— ์ง„์ž…ํ•˜๊ฒŒ ๋˜๋ฉด exportํ•œ App ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

 

// App.js
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';

export default class App extends React.Component {
 render() {
   return (
     <View style={styles.container}>
          <Text>Hello World </Text>
     </View>
   );
 }
}
const styles = StyleSheet.create({
 container: {
   flex: 1,
   backgroundColor: '#fff',
   alignItems: 'center',
   justifyContent: 'center',
 },
});

React๋ฅผ importํ•˜๋Š” ์ด์œ 

import React from ‘react’;

js, jsxํŒŒ์ผ ํ™•์žฅ์ž๋ฅผ ๊ฐ€์ง„ ํŒŒ์ผ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•„์ˆ˜๋กœ ์ž…๋ ฅํ•ด์ค€๋‹ค.

react-native๋ฅผ importํ•˜๋Š” ์ด์œ 

import {StyleSheet, Text} from ‘react-native’;

react native์˜ UI ์ปดํฌ๋„ŒํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.

export default์™€ Component๋ฅผ ์ƒ์†ํ•˜๋Š” ์ด์œ 

export default class App extends React.Component

export๋ž€ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ ํ˜„์žฌ ํŒŒ์ผ์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ import(๋ถˆ๋Ÿฌ์˜ค๊ธฐ)ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๋ฅผ exportํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

โ€‹

- export default vs export name

export default: ํ•œ ๋ชจ๋“ˆ๋‹น export default๋Š” ํ•œ ๊ฐœ๋งŒ ๋„ฃ์–ด์ค€๋‹ค.

export name: ํ•œ๊ฐœ๋“  ์—ฌ๋Ÿฌ๊ฐœ๋“  ์ƒ๊ด€์—†๋‹ค.JSX ๋ฌธ๋ฒ•์˜ ํŠน์ง•

โ€‹

Component๋ฅผ ์ƒ์†ํ•˜๋Š” ์ด์œ ๋Š” ๋ฆฌ์•กํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. Componentํด๋ž˜์Šค ์•ˆ์—๋Š” ๋™์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” state์™€ JSX๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” render() ํ•จ์ˆ˜ ๋“ฑ์ด ์žˆ์–ด ํ•จ์ˆ˜๋ฅผ ์ง์ ‘ ์ •์˜ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์† ๋ฐ›์•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

UI ์ปดํฌ๋„ŒํŠธ์™€ renderํ•จ์ˆ˜ ๊ทธ๋ฆฌ๊ณ  StyleSheet์ปดํฌ๋„ŒํŠธ

class ๋‚ด๋ถ€๋ฅผ ๋ณด๋ฉด View์™€ Text๋ผ๋Š” UI component๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

View๋กœ Text๋ฅผ ๊ฐ์‹ธ๋Š” ์ด๋Ÿฐ ํ˜•ํƒœ๋Š” JSX ํ‘œํ˜„์‹์ค‘ ํ•˜๋‚˜์ด๋‹ค.

โ€‹

render ํ•จ์ˆ˜๋Š” UI์— ํ‘œ์‹œํ•  DOM tree๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์— ๋˜ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋“ค์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๊ณ  ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ๋ฌด์กฐ๊ฑด render๋กœ ๊ฐ์‹ธ์ฃผ์–ด์•ผํ•œ๋‹ค.

โ€‹

StyleSheet ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ด์šฉํ•ด์„œ ์Šคํƒ€์ผ ์ง€์ •ํ•œ๋‹ค. ์Šคํƒ€์ผ์„ render์—์„œ ๋–จ์–ด๋œจ๋ ค ๋†“์œผ๋ฉด ์ฝ”๋“œ๋ฅผ ์ข€ ๋” ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. Create๋ฅผ ํ†ตํ•ด container๋ผ๋Š” ID๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.

โ€‹

์‹คํ–‰ ํ™”๋ฉด

๋ฐ˜์‘ํ˜•

 

728x90
๋ฐ˜์‘ํ˜•