πŸš€ Development/React Native

React Native μ»΄ν¬λ„ŒνŠΈλž€? / ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ™€ ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ˜ νŠΉμ§•

Jay Din 2023. 6. 15. 12:26
728x90
λ°˜μ‘ν˜•

μ»΄ν¬λ„ŒνŠΈλž€?

μ»΄ν¬λ„ŒνŠΈλŠ” UIλ₯Ό 독립적이고 μž¬μ‚¬μš© κ°€λŠ₯ν•˜λ„λ‘ κΈ°λŠ₯ λ‹¨μœ„λ³„λ‘œ λ‚˜λˆ  놓은 λ‹¨μœ„μ΄λ‹€.

ν™”λ©΄μ˜ ꡬ성 μš”μ†Œλ“€μ€ μ—¬λŸ¬κ°€μ§€ μ»΄ν¬λ„ŒνŠΈλ“€λ‘œ 이루어져 μžˆλ‹€. λ˜ν•œ, 라이프 사이클 APIλ₯Ό 톡해 μ»΄ν¬λ„ŒνŠΈκ°€ 화면에 λ‚˜νƒ€λ‚  λ•Œ, μ‚¬λΌμ§ˆ λ•Œ, λ³€ν•  λ•Œ μž‘μ—…λ“€μ„ μˆ˜ν–‰ν•  μˆ˜λ„ μžˆλ‹€.

λ°˜μ‘ν˜•

 

μ£Όμš” μ»΄ν¬λ„ŒνŠΈ

SafeAreaView
상단에 μƒνƒœ 바와 ν•˜λ‹¨μ— ν™ˆ λ²„νŠΌ μ˜μ—­μ„ μ œμ™Έν•œ μ˜μ—­μ— μ½˜ν…μΈ λ₯Ό ν‘œμ‹œν•  λ•Œ μ‚¬μš©
View
μƒνƒœλ°”μ™€ ν™ˆ λ²„νŠΌ μ˜μ—­κΉŒμ§€ μ½˜ν…μΈ  ν‘œμ‹œ
StyleSheet
λ¦¬μ•‘νŠΈ λ„€μ΄ν‹°λΈŒ μ»΄ν¬λ„ŒνŠΈμ— μŠ€νƒ€μΌ μ μš©ν•  λ•Œ μ‚¬μš©
λ¦¬μ•‘νŠΈ λ„€μ΄ν‹°λΈŒμ—μ„œ μŠ€νƒ€μΌμ„ μ μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” 인라인 μŠ€νƒ€μΌκ³Ό StyleSheetλ₯Ό μ‚¬μš©ν•˜λŠ” 방법이 있음
ScrollView
ν™”λ©΄ 슀크둀이 κ°€λŠ₯ν•œ μ»΄ν¬λ„ŒνŠΈ
ν™”λ©΄ 슀크둀이 κ°€λŠ₯ν•œ μ»΄ν¬λ„ŒνŠΈλ‘œλŠ” FlatList, ScrollView 등을 μ œκ³΅ν•˜κ³  있음
Text
ν…μŠ€νŠΈλ₯Ό μž…λ ₯ν•  수 μžˆλŠ” μ»΄ν¬λ„ŒνŠΈ
Button
λ²„νŠΌμ„ μ‚¬μš©ν•˜κΈ° μœ„ν•œ μ»΄ν¬λ„ŒνŠΈ

 

ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ™€ ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ˜ νŠΉμ§•

ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈ

import React, {Component} from "react";
import {View, Text} from 'react-native';
class App extends Component {
const name = ‘λ¦¬μ•‘νŠΈ’;
  render(){
    return(
      <View>
        <Text> {name} </Text>
      </VIew>
    );
  } }
export default App;
  • class ν‚€μ›Œλ“œ ν•„μš”
  • Component둜 상속을 λ°›μ•„μ•Όν•œλ‹€.
  • render() λ©”μ†Œλ“œκ°€ λ°˜λ“œμ‹œ μžˆμ–΄μ•Όν•œλ‹€.
  • state, lifeCycle κ΄€λ ¨ κΈ°λŠ₯μ‚¬μš© κ°€λŠ₯ν•˜λ‹€.
  • λ©”λͺ¨λ¦¬ μžμ›μ„ ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈλ³΄λ‹€ 쑰금 더 μ‚¬μš©ν•œλ‹€.

ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈ

import React from "react";
import {View, Text} from 'react-native';
const App = () => {
  const name = ‘λ¦¬μ•‘νŠΈ’;
  return(
       <View>
              <Text> {name} </Text>
        </VIew>
}
export default App;
  • state, lifeCycle κ΄€λ ¨ κΈ°λŠ₯ μ‚¬μš© λΆˆκ°€λŠ₯ [Hook을 톡해 ν•΄κ²° 됨]
  • λ©”λͺ¨λ¦¬ μžμ›μ„ ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈλ³΄λ‹€ 덜 μ‚¬μš©ν•œλ‹€.
  • μ»΄ν¬λ„ŒνŠΈ 선언이 νŽΈν•˜λ‹€.
λ°˜μ‘ν˜•

ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ™€ ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈ 비ꡐ

μœ„ μ½”λ“œλŠ” ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ™€ ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ˜ μ‹€ν–‰κ²°κ³Όκ°€ λ™μΌν•˜λ‹€.

ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈλŠ” ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈλ³΄λ‹€ μ„ μ–Έν•˜κΈ°κ°€ μ’€ 더 νŽΈν•˜κ³ , λ©”λͺ¨λ¦¬ μžμ›μ„ 덜 μ‚¬μš©ν•œλ‹€λŠ” μž₯점이 μžˆλ‹€. κ³Όκ±°μ—λŠ” ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ—μ„œ state와 라이프사이클 APIλ₯Ό μ‚¬μš©ν•  수 μ—†λ‹€λŠ” 단점이 μžˆμ—ˆλŠ”λ°, μ΄λŸ¬ν•œ 단점은 μ•žμ„œ μ–ΈκΈ‰ν•œ κ²ƒμ²˜λŸΌ λ¦¬μ•‘νŠΈ 훅이 λ„μž…λ˜λ©΄μ„œ ν•΄κ²°λ˜μ—ˆλ‹€.

그리고 클래슀 μ»΄ν¬λ„ŒνŠΈλŠ” render ν•¨μˆ˜κ°€ κΌ­ μžˆμ–΄μ•Ό ν•˜κ³ , κ·Έ μ•ˆμ—μ„œ 보여 μ£Όμ–΄μ•Ό ν•  JSXλ₯Ό λ°˜ν™˜ν•΄μ•Ό(return) ν•©λ‹ˆλ‹€. μ•žμ— class ν‚€μ›Œλ“œλ₯Ό 적고 Componentλ₯Ό 상속 λ°›μ•„μ•Όν•œλ‹€.

728x90
λ°˜μ‘ν˜•