(TIL) React props

๋ณด๋กœ๊ผฌ๋ฆฌยท2021๋…„ 3์›” 30์ผ

React

๋ชฉ๋ก ๋ณด๊ธฐ
3/3
post-thumbnail

React Props

props๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š”(Immutable Data) ๋ฐ์ดํ„ฐ์ด๋‹ค.

์ƒ์œ„(๋ถ€๋ชจ) ์ปดํฌ๋„ŒํŠธ์—์„œ ํ•˜์œ„(์ž์‹) ์ปดํฌ๋„ŒํŠธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „ํ•  ๋•Œ, props๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.

React Props

// Car ์š”์†Œ์— "brand"์†์„ฑ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

const myelement = <Car brand="Ford" />;

๊ตฌ์„ฑ ์š”์†Œ๋Š” ์ธ์ˆ˜๋ฅผ props๊ฐ์ฒด๋กœ ๋ฐ›๋Š”๋‹ค

// ๊ตฌ์„ฑ ์š”์†Œ์—์„œ "brand" ์†์„ฑ์„ ์‚ฌ์šฉํ•œ๋‹ค.

class Car extends React.Component {
  render() {
    return <h2>I am a {this.props.brand}!</h2>;
  }
}

Pass Date

prop์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

//Garage์ปดํฌ๋„ŒํŠธ์˜ "brand"์†์„ฑ์„ Car์ปดํฌ๋„ŒํŠธ๋กœ ๋ณด๋‚ธ๋‹ค.

class Car extends React.Component {
  render() {
    return <h2>I am a {this.props.brand}!</h2>;
  }
}
class Garage extends React.Component {
  render() {
    return (
      <div>
      <h1>Who lives in my garage?</h1>
      <Car brand="Ford" />
      </div>
    );
  }
}

ReactDOM.render(<Garage />, document.getElementById('root'));

์ „์†กํ•  ๋ณ€์ˆ˜๊ฐ€ ์žˆ๊ณ  ์œ„์˜ ์˜ˆ์—์„œ์™€ ๊ฐ™์ด ๋ฌธ์ž์—ด์ด ์•„๋‹ˆ๋ผ๋ฉด ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ์ค‘๊ด„ํ˜ธ ์•ˆ์— ๋„ฃ๋Š”๋‹ค

class Car extends React.Component {
  render() {
    return <h2>I am a {this.props.brand}!</h2>;
  }
}
//"carname"์ด๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ  Car ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๋ณด๋‚ธ๋‹ค.

class Garage extends React.Component {
  render() {
    const carname = "Ford";
    return (
      <div>
      <h1>Who lives in my garage?</h1>
      <Car brand={carname} />
      </div>
    );
  }
}

ReactDOM.render(<Garage />, document.getElementById('root'));

๊ฐ์ฒด ์ผ ๋•Œ,

class Car extends React.Component {
  render() {
    return <h2>I am a {this.props.brand.model}!</h2>;
  }
}
class Garage extends React.Component {
  render() {
    const carinfo = {name: "Ford", model: "Mustang"};
    return (
      <div>
      <h1>Who lives in my garage?</h1>
      <Car brand={carinfo} />
      </div>
    );
  }
}

ReactDOM.render(<Garage />, document.getElementById('root'));

Props in the Constructor

์ปดํฌ๋„ŒํŠธ์— ์ƒ์„ฑ์ž ํ•จ์ˆ˜๊ฐ€์žˆ๋Š” ๊ฒฝ์šฐ props๋Š” ํ•ญ์ƒ ์ƒ์„ฑ์ž ๋ฐ super()๋ฉ”์„œ๋“œ ๋ฅผ ํ†ตํ•ด React.Component์— ์ „๋‹ฌ๋˜์–ด์•ผํ•œ๋‹ค.

class Car extends React.Component {
  constructor(props) {
    super(props);
  }
  render() {
    return <h2>I am a {this.props.model}!</h2>;
  }
}

ReactDOM.render(<Car model="Mustang"/>, document.getElementById('root'));

props๋Š” ์ฝ๊ธฐ์ „์šฉ์ด๋ผ, ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

React State

์ปดํฌ๋„ŒํŠธ์—์„œ ์œ ๋™์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ, state๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. React.js ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ๋•, state๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ๊ฐฏ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์„ ๋…ธ๋ ฅํ•ด์•ผํ•œ๋‹ค.


props์™€ state๋Š” ์ƒ๊ธด ๊ฑด ๋น„์Šทํ•˜์ง€๋งŒ ์šฉ๋„๋Š” ๋‹ค๋ฅด๋‹ค. ํ—ท๊ฐˆ๋ฆฌ์ง€ ์•Š๊ฒŒ ๋‹ค์Œ ํŠน์„ฑ์„ ๊ธฐ์–ตํ•˜์ž.

profile
1. ๋‚˜๋Š” ๋ฌด์—‡์„ ๋ชจ๋ฅด๋Š”๊ฑธ๊นŒ 2. ์‚ฌ์†Œํ•œ ๊ฒƒ๋„ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ๋Š” ๋„์›€์ด ๋œ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€