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

[React Native] Props ๋ž€? ์˜ˆ์ œ

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

Props, State๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋…์ด๋‹ค.

โ€‹

๋ฆฌ์•กํŠธ๋Š” ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ”Œ๋กœ์šฐ(one-way data flow)

props๋ฅผ ๋ฐ›์€ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋Š” ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๊ณ , ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ๋กœ ๊ฐ’์„ ์ „๋‹ฌํ•  ์ˆ˜ ์—†๋‹ค.

ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ์˜ ๋ณ€ํ™”๋กœ ์ธํ•ด ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ณ€ํ™”ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์— state๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๋ฉด ๋œ๋‹ค.

โ€‹

Props๋Š” ์ปดํฌ๋„ŒํŠธ์—์„œ ์‚ฌ์šฉ ํ•  ๋ฐ์ดํ„ฐ ์ค‘ ๋ณ€๋™๋˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

 

๋ฐ˜์‘ํ˜•

Props

  • props๋Š” ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—๊ฒŒ ๊ฐ’์„ ์ „๋‹ฌํ•  ๋•Œ ์‚ฌ์šฉ -> (์ž์‹ ์ž…์žฅ์—์„œ) ์ฝ๊ธฐ ์ „์šฉ
  • ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” props๋ฅผ ๋ฐ›๊ธฐ๋งŒํ•˜๊ณ , ๋ฐ›์•„์˜จ prpos๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค.
  • defaultProps: props์— ๊ฐ’์„ ์ž…๋ ฅํ•ด์ฃผ์ง€ ์•Š์•˜์„ ๋•Œ, ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•ด ๋†“๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ Props

// MyName.js
import React, { Component } from 'react';
import { Text, View,} from 'react-native';
class MyName extends Component {
    static defaultProps = {
      name: 'Lee'
    };
    render() {
      return (
        <View>
          <Text>์•ˆ๋…•ํ•˜์„ธ์š”! ์ œ ์ด๋ฆ„์€ {this.props.name}์ž…๋‹ˆ๋‹ค.</Text>
        </View>
      );
    }}
  export default MyName
// App.js
import React, { Component } from 'react';
import MyName from './MyName';
class App extends Component{
  render(){
    return( <MyName name="jun"/>);
  }}
export default App;

ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ Props

// MyName.js
import React from 'react';
import { Text, View,} from 'react-native';
const MyName = ({ name }) => {
    return (
        <View>
            <Text>์•ˆ๋…•ํ•˜์„ธ์š”! ์ œ ์ด๋ฆ„์€ {name} 
                   ์ž…๋‹ˆ๋‹ค.</Text>
        </View>
    )};
MyName.defaultProps = {
  name: 'Lee'
};
export default MyName;
// App.js
import React, { Component } from 'react';
import MyName from './MyName';
class App extends Component {
  render() {
    return <MyName name="jun" />;
  }}
export default App;

 

์ฝ”๋“œ ์„ค๋ช…

๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์ธ App.js์—์„œ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์ธ MyName.js์˜ name์— jun์ด๋ผ๋Š” ๊ฐ’์„ ์ค€๋‹ค.

๋งŒ์•ฝ, ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์˜ name์— ๊ฐ’์„ ์ฃผ์ง€ ์•Š์•˜๋‹ค๋ฉด defaultProps์˜ name์— ์„ค์ •๋˜์–ด ์žˆ๋Š” Lee๊ฐ€ ์ ์šฉ๋˜์–ด ์‹คํ–‰ ํ™”๋ฉด์— "์•ˆ๋…•ํ•˜์„ธ์š”! ์ œ ์ด๋ฆ„์€ Lee์ž…๋‹ˆ๋‹ค."๋ผ๊ณ  ๋‚˜์˜จ๋‹ค.

ํ•˜์ง€๋งŒ, ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์ธ MyName์˜ name๊ฐ’์— Jun์ด๋ผ๋Š” ๊ฐ’์„ ๋„ฃ์–ด์คฌ๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰ ํ™”๋ฉด์—๋Š” "์•ˆ๋…•ํ•˜์„ธ์š”! ์ œ ์ด๋ฆ„์€ Jun์ž…๋‹ˆ๋‹ค."๋ผ๊ณ  ๋‚˜์˜จ๋‹ค.

โ€‹

ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์™€ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ์ฝ”๋“œ๋ฅผ ๋น„๊ตํ•ด๋ณด๋ฉด ํ™•์‹คํžˆ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๊ฐ€ ์ค„์–ด ๊ฐ„๊ฒฐํ•˜๋‹ค. ๋˜ํ•œ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ดˆ๊ธฐ ๋งˆ์šดํŠธ ์†๋„๊ฐ€ ๋” ๋น ๋ฅด๋‹ค.

์‹คํ–‰ํ™”๋ฉด
๋ฐ˜์‘ํ˜•
728x90
๋ฐ˜์‘ํ˜•