ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [React] React Element, Component
    Front-end/react 2022. 8. 7. 22:35

    React Element

    ๐Ÿ’ก ๋ฆฌ์•กํŠธ ์•ฑ๋“ค์˜ ๊ฐ€์žฅ ์ž‘์€ building block์ด๋‹ค

     

    • React element๋Š” DOM element์˜ ๊ฐ€์ƒํ‘œํ˜„์ด๋‹ค
    • React element๋Š” ํ™”๋ฉด์— ๋ณด์ด๋Š” ๊ฒƒ๋“ค์„ ๊ธฐ์ˆ ํ•œ๋‹ค
    • React element๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด ํ˜•ํƒœ๋กœ ์กด์žฌํ•œ๋‹ค(๋ถˆ๋ณ€์„ฑ์˜ ํŠน์ง•์„ ๊ฐ€์ง)

     

    const element = <h1>Hello, World</h1>;

     

    ์‹คํ–‰๋  ๋•Œ createElement() -> React element ์ƒ์„ฑ -> DOM element ์ƒ์„ฑ๋œ๋‹ค


    React element ํŠน์ง•

    React element๋Š” ๋ถˆ๋ณ€์„ฑ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค

    ์ฆ‰, element ์ƒ์„ฑ ํ›„ ์ž์‹์ด๋‚˜ ์†์„ฑ์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค(์—…๋ฐ์ดํŠธ ํ•˜๋ ค๋ฉด element๋ฅผ ์žฌ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค)

     

    ๋ฆฌ์•กํŠธ์˜ ์žฅ์  ์ค‘ ๋น ๋ฅธ ๋žœ๋”๋ง ์†๋„๋Š” virtual DOM์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค

     

    /* Root DOM Node */
    
    <div id="root></div>

     

    Root DOM Node์— element ๋ Œ๋”๋งํ•˜๋Š” ๋ฐฉ๋ฒ•

    *๋ Œ๋”๋ง: virtual DOM์—์„œ ์‹ค์ œ DOM์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ

     

    const element = <h1>Hi, React! </h1>;
    ReactDOM.render(element, document.getElementById('root'));

     

     

     

     


    React Component

    ๐Ÿ’ก React๋Š” component ๊ธฐ๋ฐ˜์ด๋‹ค
         ๋ ˆ๊ณ  ์กฐ๋ฆฝํ•˜๋“ฏ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋ชจ์•„์„œ ๊ฐœ๋ฐœํ•œ๋‹ค

     

     

    props(์ž…๋ ฅ) -> React component -> React element(์ถœ๋ ฅ)

     

     


    props(property)

    ๐Ÿ’ก ์ปดํฌ๋„ŒํŠธ์— ์ „๋‹ฌํ•  ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ ์žˆ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด


    props ํŠน์ง•

    • ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค(Read-only)
    • pureํ•จ์ˆ˜ ๊ฐ™์€ ์—ญํ• ์„ ํ•ด์•ผํ•œ๋‹ค
    pure ํ•จ์ˆ˜ impure ํ•จ์ˆ˜
    ์ž…๋ ฅ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๊ณ , ๊ฐ™์€ ์ž…๋ ฅ๊ฐ’์ผ ๊ฒฝ์šฐ ํ•ญ์ƒ ๊ฐ™์€ ์ถœ๋ ฅ๊ฐ’์„ ๊ฐ€์ง ์ž…๋ ฅ๊ฐ’์ด ๋ณ€๊ฒฝ๋จ

    ์ปดํฌ๋„ŒํŠธ์˜ ์ข…๋ฅ˜

    • Function Component(Hook)
    • class Component

     

    ์ปดํฌ๋„ŒํŠธ ์ข…๋ฅ˜ ๋น„๊ตํ•˜๊ธฐ
    // Function Component
    
    function Welcome(props) {
       return <h1>Hi, {props.name}</h1>;
    }
    // class Component
    
    class Welcome extends React.Components {
       render() {
          return<h1>Hi, {this.props.name}</h1>;
       }
    }

     

    ๐Ÿ’ก ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„์€ "๋Œ€๋ฌธ์ž"๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค
         (์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋ฉด DOM ํƒœ๊ทธ๋กœ ์ธ์‹ํ•œ๋‹ค ex. div, span, ...)

    ์ปดํฌ๋„ŒํŠธ ๋žœ๋”๋ง

    function Welcome(props) {
       return <h1>Hi, {props.name}</h1>;
    }
    
    
    const element = <Welcome name="์—ฐ์ˆ˜" />;
    ReactDOM.render(
       element,
       document.getElementById('root')
    );

     

    1. "์—ฐ์ˆ˜"๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ํ•˜๋Š” render ํ•จ์ˆ˜ ํ˜ธ์ถœ

    2. name์ด "์—ฐ์ˆ˜"์ธ element ์ƒ์„ฑ

    3. ์‹ค์ œ DOM์— ์—…๋ฐ์ดํŠธ

    4. ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์ž„

Designed by Tistory.