๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
JavaScript/React

[React] React.js ์‹œ์ž‘ํ•˜๊ธฐ

by soy๋ฏธ๋‹ˆ 2021. 10. 13.

 

 

 

 

[ CONTENTS ]

1. Reac ์‹คํ–‰ ๋ช…๋ น์–ด

2. React ์—์„œ Jquery ์‚ฌ์šฉํ•˜๊ธฐ

3. React prop ์‚ฌ์šฉํ•˜๊ธฐ

 

 


 

 

React ๋ž€?

๋ฆฌ์•กํŠธ๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋ฉฐ, ์˜ค์ง View ๋งŒ ์‹ ๊ฒฝ ์“ฐ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.

 

 

React ํŠน์ง•

๋ฆฌ์•กํŠธ์˜ ์ฃผ์š” ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋Š” Virtual DOM ์„ ์‚ฌ์šฉํ•œ๋‹ค. DOM(Document Object Model) ์€ ๊ฐ์ฒด๋กœ ๋ฌธ์„œ ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ XML ์ด๋‚˜ HTML ๋กœ ์ž‘์„ฑํ•œ๋‹ค. ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” DOM ์„ ํ™œ์šฉํ•ด์„œ ๊ฐ์ฒด์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ CSS ๋ฅผ ์ ์šฉํ•˜๊ณ  DOM ์€ ํŠธ๋ฆฌ ํ˜•ํƒœ๋ผ์„œ ํŠน์ • ๋…ธ๋“œ๋ฅผ ์ฐพ๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ์›ํ•˜๋Š” ๊ณณ์— ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

์™œ ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ์—์„œ ์š”์†Œ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ํ•˜๋‚˜์˜ ์š”์†Œ๋กœ ๊ฐ์‹ธ์ฃผ์–ด์•ผ ํ• ๊นŒ?

Virtual DOM ์—์„œ ์ปดํฌ๋„ŒํŠธ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•ด ๋‚ผ ๋•Œ ํšจ์œจ์ ์œผ๋กœ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋„๋ก ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€๋Š” ํ•˜๋‚˜์˜ DOM ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•œ๋‹ค๋Š” ๊ทœ์น™์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

function App(){
	return(
    	<div>
        	<h1>๋ฆฌ์•กํŠธ ์•ˆ๋…•</h1>
        	<h2>hello world</h2>
        </div>
    )
}

 

 

๊ผญ div ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋”๋ผ๋„ Fragment ๋ผ๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

function App(){
	return(
    	<Fragment>
        	<h1>๋ฆฌ์•กํŠธ ์•ˆ๋…•</h1>
        	<h2>hello world</h2>
        </Fragment>
    )
}

 

 

 

๋ Œ๋”๋ง์ด๋ž€?

์‚ฌ์šฉ์ž ํ™”๋ฉด์— ๋ทฐ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์„ ๋ Œ๋”๋ง์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

 

 


 

 

1. React ์‹คํ–‰ ๋ช…๋ น์–ด (vscode ๋‚ด ํ„ฐ๋ฏธ๋„์—์„œ)

 

1. ํด๋” ์ƒ์„ฑ

2. cd ํด๋”

3. npx create-react-app .

4. npm install react-router-dom

5. npm start

6. React ํด๋” ๊ตฌ์กฐ๊ฐ€ ์ƒ์„ฑ ๋œ๋‹ค.

 

 

localhost:3000

 

 

 

 

 

2. React ์—์„œ Jquery ์‚ฌ์šฉํ•˜๊ธฐ

 

1. cd ํด๋”

2. npm install jquery

3. App.js ์ˆ˜์ •

 

import './App.css';
import Jquery from './R016_Jquery';

function App() {
  return (
    <div>
      <h1>Start React 200!</h1>
      <p>CSS ์ ์šฉํ•˜๊ธฐ</p>
      <Jquery />
    </div>
  );
}

export default App;

 

 

4. Jquery ํŒŒ์ผ ์ž‘์„ฑ

 

import React, {Component} from 'react';
import $ from 'jquery';

class R016_Jquery extends Component {
    input_alert = (e) => {
        var input_val = $('#inputId').val();
        alert(input_val);
    }
    render(){
        return(
            <div>
                <h2>[THIS IS Jquery]</h2>
                <input id="inputId" name="inputName"/>
                <button id="ButtonId" onClick={e=>this.input_alert(e)}>Jquery Button </button>
            </div>
        )
    }
}

export default R016_Jquery;

 

 

 

5. ์›น ์‹คํ–‰ ํ™”๋ฉด

 

 

 

3. React props ์‚ฌ์šฉํ•˜๊ธฐ

props ๋ž€, ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. props ๋ฅผ ์ „๋‹ฌ๋ฐ›์€ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋„ฃ์–ด ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

 

 

1. App.js ์ˆ˜์ •

 

import './App.css';
import Props from './R017_Props';

function App() {
  return (
    <div>
      <h1>Start React 200!</h1>
      <p>CSS ์ ์šฉํ•˜๊ธฐ</p>
      <Props props_val="THIS IS PROPS" />
    </div>
  );
}

export default App;

 

 

2. prop ํŒŒ์ผ ์ž‘์„ฑํ•˜๊ธฐ

 

import React, { Component } from 'react'

class R017_Props extends Component {
    render() {
        let props_val = this.props.props_val;
        props_val += ' from App.js'
        return (
            <div>
                {props_val}
            </div>
        )
    }
}
export default R017_Props;

 

 

 

3. ์›น ์‹คํ–‰ ํ™”๋ฉด

 

 

 

 

*์ฐธ๊ณ  : ๋ณธ ํฌ์ŠคํŒ…์€ ๋„์„œ [์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ๋ฆฌ์•กํŠธ 200์ œ] ๋กœ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ด๋‹ค.

๋Œ“๊ธ€