JSX์™€ Component

Dev.Jayยท2021๋…„ 7์›” 14์ผ
1

React

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

๋ชฉ์ฐจ

  1. Hello React !
  2. JSX
    • JSX๋ž€ ?
    • ํ‘œํ˜„์‹
    • JSX์˜ ์š”์†Œ
    • JSX์—์„œ์˜ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
  3. Component
    • ์ปดํฌ๋„ŒํŠธ๋ž€ ?
    • ์–ด๋–ป๊ฒŒ ๋ถˆ๋Ÿฌ์˜ฌ๊นŒ ?
    • ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ
    • ์ปดํฌ๋„ŒํŠธ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
    • ๊ณ„์‚ฐ ๋ฐ ์กฐ๊ฑด๋ฌธ์€ ?
    • ์ปดํฌ๋„ŒํŠธ ๋‚ด์˜ this์™€ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ

Hello React !

  • React์—์„œ๋Š” ๋ณธ์งˆ์ ์œผ๋กœ ๋ Œ๋”๋ง ๋กœ์ง์ด UI ๋กœ์ง๊ณผ ์—ฐ๊ฒฐ๋œ๋‹ค.

    • UI๋กœ์ง : ์ด๋ฒคํŠธ๊ฐ€ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐฉ์‹, ์‹œ๊ฐ„์— ๋”ฐ๋ผ state๊ฐ€ ๋ณ€ํ•˜๋Š” ๋ฐฉ์‹, ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ค€๋น„๋˜๋Š” ๋ฐฉ์‹ ..
  • React๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ์— ๋งˆํฌ์—…๊ณผ ๋กœ์ง์„ ๋„ฃ์–ด ๊ธฐ์ˆ ์„ ์ธ์œ„์ ์œผ๋กœ ๋ถ„๋ฆฌํ•˜์ง€๋งŒ !

    ๋‘˜ (๋งˆํฌ์—…, ๋กœ์ง) ํฌํ•จํ•˜๋Š” "์ปดํฌ๋„ŒํŠธ"๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๋Š์Šจํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋œ ์œ ๋‹›์œผ๋กœ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค.


JSX

  1. JSX๋ž€ ?
const element = <h1>Hello, World !</h1>;

์œ„์˜ ๋ฌธ๋ฒ•์€ ๋ฌธ์ž์—ด๋„, HTML๋„ ์•„๋‹Œ JSX ์ด๋‹ค.

  • JSX๋Š” JavaScript๋ฅผ ํ™•์žฅํ•œ ๋ฌธ๋ฒ•์ด๋‹ค.
  • JSX๋Š” React "์—˜๋ฆฌ๋จผํŠธ(element)"๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  1. ํ‘œํ˜„์‹
const name = 'Josh Perez';
const element = <h1>Hello, {name}</h1>;

ReactDom.render(
	element,
	document.getElementById('root')
);

name์ด๋ผ๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ ํ›„, ์ค‘๊ด„ํ˜ธ๋กœ ๊ฐ์‹ธ JSX ์•ˆ์—์„œ ์‚ฌ์šฉํ–ˆ๋‹ค.

  • JSX์˜ ์ค‘๊ด„ํ˜ธ ์•ˆ์—๋Š” ์œ ํšจํ•œ ๋ชจ๋“  JavaScript ํ‘œํ˜„์‹์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์ฆ‰, JSX ๋‚ด์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ์—๋Š” { } ๋‚ด์— ์ž‘์„ฑํ•ด์ฃผ์ž.
  1. JSX์˜ ์š”์†Œ

    • JSX ์š”์†Œ๋Š” ๋ณ€์ˆ˜์— ํ• ๋‹น ๋ฐ ํ•จ์ˆ˜์— ์ „๋‹ฌ, ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด์— ์ €์žฅํ•œ ๊ฒƒ์ด JS ํ‘œํ˜„์‹๊ณผ ๊ฐ™๋‹ค.

    • HTML์ฒ˜๋Ÿผ JSX์š”์†Œ์— attribute ์ถ”๊ฐ€๋˜ํ•œ ๊ฐ€๋Šฅํ•˜๋‹ค.

      • ๐Ÿ“ฃ JSX์—์„œ๋Š” class๋ฅผ className์œผ๋กœ ์จ์ฃผ๊ธฐ.
  1. JSX์—์„œ์˜ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
function funcTest(){
	alert('hello');
}

<button onClick={funcTest} />
  • ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ attribute์˜ ์ด๋ฆ„์€ on์œผ๋กœ ์‹œ์ž‘ํ•˜์ž.

Component

  1. ์ปดํฌ๋„ŒํŠธ๋ž€ ?
  • ๋ฆฌ์•กํŠธ App์€ ์ปดํฌ๋„ŒํŠธ๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

    • ์ปดํฌ๋„ŒํŠธ : HTML ์ผ๋ถ€๋ฅผ ๋žœ๋”๋งํ•˜๊ธฐ ์œ„ํ•œ ํ•˜๋‚˜์˜ ์ž‘์—…์—์„œ์˜ ์ž‘๊ณ  ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ.
  1. ์–ด๋–ป๊ฒŒ ๋ถˆ๋Ÿฌ์˜ฌ๊นŒ ?
import React from 'react'; // ๋ฆฌ์•กํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
import ReactDOM from 'react-dom'; // DOM์— ๋ฐ˜์‘ํ•˜๋Š”๋ฒ•
  • ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฆฌ์•กํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ฑฐ๋‚˜ DOM์— ๋ฐ˜์‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
  1. ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ
import React, { Component } from 'react';

class aaa extends Component { // ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ / rcc ๋‹จ์ถ•ํ‚ค
    render() {
        return (
            <div>
                
            </div>
        );
    }
}

export default aaa;
import React from 'react';

const aaa = () => { // ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ / rsc ๋‹จ์ถ•ํ‚ค
    return (
        <div>
            
        </div>
    );
};

export default aaa;
  • ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  • ํด๋ž˜์Šค๋ช…์€ ๋ฐ˜๋“œ์‹œ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ์นด๋ฉœ์ผ€์ด์Šค ๋ฐฉ์‹์œผ๋กœ ์ž‘์„ฑํ•  ๊ฒƒ !

  • ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ ๋‚ด์—๋Š” ๋ฐ˜๋“œ์‹œ render( )๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•œ๋‹ค.

    • render( ) ๋ฉ”์†Œ๋“œ๋Š” ๋ฐ˜๋“œ์‹œ return ํฌํ•จํ•ด์•ผ ํ•œ๋‹ค.
  1. ์ปดํฌ๋„ŒํŠธ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
<aaa></aaa>
  • ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ๋‚˜๋ฉด ์ปดํฌ๋„ŒํŠธ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  1. ๊ณ„์‚ฐ ๋ฐ ์กฐ๊ฑด๋ฌธ์€ ?
import React, { Component } from 'react';

class aaa extends Component { 
    render() {
      // ๋ฆฌํ„ด์ด ๋˜๊ธฐ ์ „์— ์กฐ๊ฑด๋ฌธ์ด๋‚˜ ๊ณ„์‚ฐ์„ ํ•ด์ฃผ๋„๋ก ํ•˜์ž.
      const sum = 1 + 2;
        return (
            <div>
                <h1>Sum is {sum}</h1>
            </div>
        );
    }
}

export default aaa;
  • ๋ฆฌํ„ด์ด ๋˜๊ธฐ ์ „์— ์กฐ๊ฑด๋ฌธ ๋˜๋Š” ๊ณ„์‚ฐ์„ ํ•ด์ฃผ๋„๋ก ํ•˜์ž.
  1. ์ปดํฌ๋„ŒํŠธ ๋‚ด์˜ this์™€ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ
import React, { Component } from 'react';

class aaa extends Component { 
  testFunc(){
    alert('hello ?!');
  }
    render() {
        return (
            <div>
                onClick={function(e){ // ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋ฉ”์†Œ๋“œ๋กœ ์ •์˜ํ•จ.
              e.preventDefault();
              this.testFunc // this๋Š” ์ปดํฌ๋„ŒํŠธ ์ธ์Šคํ„ด์Šค๋ฅผ ์ง€์นญํ•œ๋‹ค. 
            }}
            </div>
        );
    }
}

export default aaa;

๋‹ค์Œ์œผ๋กœ๋Š” State์™€ Props์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

profile
๐Ÿ‘€

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