React - ํ•ฉ์„ฑ

2022. 5. 7. 17:29ใ†React

React - ํ•ฉ์„ฑ(React ๊ณต์‹๋ฌธ์„œ)

 

 

https://ko.reactjs.org/docs/composition-vs-inheritance.html

 

ํ•ฉ์„ฑ (Composition) vs ์ƒ์† (Inheritance) – React

A JavaScript library for building user interfaces

ko.reactjs.org

 

 

์–ด๋–ค ์ปดํฌ๋„ŒํŠธ๋“ค์€ ์–ด๋–ค ์ž์‹ ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ ๋“ค์–ด์˜ฌ ์ง€ ๋ฏธ๋ฆฌ ์˜ˆ์ƒํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๋ฒ”์šฉ์ ์ธ '๋ฐ•์Šค' ์—ญํ• ์„ ํ•˜๋Š” Sidebar ํ˜น์€ Dialog์™€ ๊ฐ™์€ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ž์ฃผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

function FancyBorder(props) {
  return (
    <div className={'FancyBorder FancyBorder-' + props.color}>
      {props.children}
    </div>
  );
}

 

function WelcomeDialog() {
  return (
    <FancyBorder color="blue">
      <h1 className="Dialog-title">
        Welcome
      </h1>
      <p className="Dialog-message">
        Thank you for visiting our spacecraft!
      </p>
    </FancyBorder>
  );
}

 

ํŠน์ˆ˜ํ™”

๋•Œ๋กœ๋Š” ์–ด๋–ค ์ปดํฌ๋„ŒํŠธ์˜ "ํŠน์ˆ˜ํ•œ ๊ฒฝ์šฐ"์ธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•  ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๊ณต์‹๋ฌธ์„œ์˜ ์˜ˆ์‹œ์—๋Š” SignUpDialog, Dialog๋ฅผ ์˜ˆ์‹œ๋กœ ๋“ค๊ณ ์žˆ๋‹ค.

 

function FancyBorder(props) { //border๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ ํ•ฉ์„ฑ
  return (
    <div className={'FancyBorder FancyBorder-' + props.color}>
      {props.children}
    </div>
  );
}

function Dialog(props) { //์ผ๋ฐ˜์ ์ธ ์ปดํฌ๋„ŒํŠธ ํ•ฉ์„ฑ
  return (
    <FancyBorder color="blue">
      <h1 className="Dialog-title">
        {props.title} //title prop์„ ๋ฐ›์Œ.
      </h1>
      <p className="Dialog-message">
        {props.message} //message prop์„ ๋ฐ›์Œ.
      </p>
      {props.children} //Dialog์•„๋ž˜์˜ ์ž์‹ ์—˜๋ฆฌ๋จผํŠธ๋“ค์„ ์ถœ๋ ฅ
    </FancyBorder>
  );
}

class SignUpDialog extends React.Component {
  constructor(props) {
    super(props);
    this.handleChange = this.handleChange.bind(this);
    this.handleSignUp = this.handleSignUp.bind(this);
    this.state = {login: ''};
  }

  render() {
    return (
      <Dialog title="Mars Exploration Program" //์ข€ ๋” ๊ตฌ์ฒด์ ์ธ ์ปดํฌ๋„ŒํŠธ SignUpDialog์—์„œ ์ผ๋ฐ˜์ ์ธ ์ปดํฌ๋„ŒํŠธ ๋ Œ๋”๋ง
              message="How should we refer to you?">
        <input value={this.state.login}
               onChange={this.handleChange} />
        <button onClick={this.handleSignUp}>
          Sign Me Up!
        </button>
      </Dialog>
    );
  }

 

 

'React' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

React - useRef  (0) 2022.05.07
State ๋Œ์–ด์˜ฌ๋ฆฌ๊ธฐ  (0) 2022.05.07
React - useEffect, useCallback  (0) 2022.04.11