Javascript/React์™€ Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ

[React + Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ] (1) ๋ฆฌ์•กํŠธ์˜ ์ปจ์…‰ state

Rainbow๐ŸŒˆCoder 2022. 12. 2. 21:51
728x90

React! ๋Š” ๊ฐ’์˜ ๋ณ€ํ™”์— react ๋ฐ˜์‘ํ•˜๋‹ค๋ž€ ์ปจ์…‰์— ๊ฑธ๋งž๊ฒŒ

๋ณ€์ˆ˜ ๊ฐ’์ด ๋ฐ”๋€” ๋•Œ ๋งˆ๋‹ค getElementById~ innerText~ ์ผ์ผํžˆ ํ•ด์ฃผ๋˜๊ฑธ ํ•ด์ฃผ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

๊ฐ’์ด ๋ณ€ํ•˜๋ฉด UI๋„ ์ž๋™์œผ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค. ->

State

state๊ฐ€ ๋ณ€ํ•˜๋ฉด UI๊ฐ€ ๋ณ€ํ•˜๊ฒŒ ํ•œ๋‹ค.

 

 

ํ„ฐ๋ฏธ๋„ ํ”„๋กœ์ ํŠธ

๋งŒ๋“ค๊ณ  ์‹ถ์€ ํด๋” ์ƒ์„ฑ mkdir react-test

cd react-test

npx create-react-app ํด๋”๋ช… ๋‚˜๊ฐ™์€ ๊ฒฝ์šฐ๋Š” npx create-react-app rsp ๋กœ ํ•จ

์ƒ์„ฑํ•˜๋Š”๋ฐ ์‹œ๊ฐ„ ์ข€ ๊ฑธ๋ฆผ.

 

์ด๋ ‡๊ฒŒ ๋œจ๋ฉด ์„ฑ๊ณต

cd rsp

code . ํ•˜๋ฉด ๋ฐ”๋กœ ์„ธํŒ…๋œ ๋น„์ฅฌ์–ผ ์ŠคํŠœ๋””์˜ค ์ฝ”๋“œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์—ด๋ฆฐ๋‹ค. 

 

1. App.js  App.css ์ •๋ฆฌ 

App.css ํŒŒ์ผ ์•ˆ์— ์žˆ๋Š” ๋ชจ๋“  ๋‚ด์šฉ ์ง€์›Œ์ค€๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด ์ •๋ฆฌํ•ด์ค€๋‹ค.

import logo from './logo.svg';
import './App.css';

function App() {
  return (
    <div>
    </div>
  );
}

export default App;

 

2. React hook์ธ useState ์— ๋Œ€ํ•œ ์ดํ•ด

useState๋ฅผ import ํ•ด์ค€๋‹ค

import { useState } from 'react';

์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ๊ณ   react run start 

import { useState } from 'react';
import './App.css';

function App() {
	//๋ฆฌ์•กํŠธ์˜ ์ปดํฌ๋„ŒํŠธ : ๊ด€๋ จ์žˆ๋Š” html๊ณผ js๋ฅผ ํ•จ๊ป˜ ์“ธ ์ˆ˜ ์žˆ๋‹ค. ์ฝ”๋“œ ๊ด€๋ฆฌ, ํŒŒ์ผ ๊ด€๋ฆฌ ์šฉ์ด
	//์ž๋ฐฐ์Šคํฌ๋ฆฝํŠธ ๋‹จ
	//๋ฆฌ์•กํŠธ์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” useState๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด state๋ฅผ ๋งŒ๋“ฌ
	//์ฐธ๊ณ ๋กœ, ๋ฆฌ์•กํŠธ์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ์œ ์šฉํ•œ ํ•จ์ˆ˜๋“ค์„ react hook์ด๋ผ๊ณ  ํ•˜๊ณ  ๊ทธ ์ค‘ ํ•˜๋‚˜๊ฐ€ useState์ธ ๊ฒƒ
	//useState(0)์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ดˆ๊นƒ๊ฐ’, ๋ฐฐ์—ด ๋ฐ˜ํ™˜ [์ดˆ๊ธฐ๊ฐ’์ด ๋‹ด๊ธด state, state ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ํ•จ์ˆ˜]
	const [counter, setcounter] = useState(0);
	const increase = () => {
		setcounter(counter + 1); //setcounter2 ์ด ํ•จ์ˆ˜๋งŒ์„ ์ด์šฉํ•ด์„œ counter2๊ฐ’์„ ๋ฐ”๊ฟ”์ค€๋‹ค
	}
	return (
		//html๋‹จ
		<div>
			<button onClick={increase}>{counter}</button>
		</div>
	);
}

export default App;

๋ฒ„ํŠผ

ํด๋ฆญ ์ˆ˜๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณด์—ฌ์ฃผ๋Š” ๋ฒ„ํŠผ์ด ๋ณด์ธ๋‹ค.

 

UI์— ๋ณด์—ฌ์ค˜์•ผ ํ•˜๋Š” ๊ฐ’์€ state๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•จ : ๋‹ค๋งŒ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ž‘๋™ํ•ด์„œ ๋™๊ธฐ์— ๋น„ํ•ด state๋ฐ”๋€Œ๋Š”๊ฑด ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ฆผ

state ๋ฐ”๊พธ๋Š” ํ•จ์ˆ˜๊ฐ€ ๋ฐ”๋กœ ์‹คํ–‰์ด ๋˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ state ๋ฐ”๊พธ๋Š” ํ•จ์ˆ˜๋“ค์„ ๋ชจ์•„์„œ ํ•œ๋ฒˆ์— ์‹คํ–‰

๋˜ํ•œ state๋Š” ๊ทธ ์ „์˜ ๊ฐ’์„ ๊ธฐ์–ตํ•จ

์ปดํฌ๋„ŒํŠธ ์•ˆ์— ์žˆ๋Š” state๊ฐ€ ๋ฐ”๋€Œ๋ฉด UI์— ์—…๋ฐ์ดํŠธ๋œ state ๊ฐ’์ด ๋ณด์ธ๋‹ค.

์ปดํฌ๋„ŒํŠธ ์•ˆ์— ์žˆ๋Š” ์ผ๋ฐ˜ ๋ณ€์ˆ˜๋“ค์€ ์•„์˜ˆ ๋‹ค์‹œ ์ดˆ๊ธฐํ™”๋จ

 

<์ •๋ฆฌ>

* ๋ณ€์ˆ˜๋Š” re render ๋  ๋•Œ๋งˆ๋‹ค ์ดˆ๊ธฐํ™”๊ฐ€ ๋œ๋‹ค.

* state ๊ฐ’์€ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.

 

state๋Š” const๋กœ ์„ ์–ธ


state์˜ ๊ฐ’์€ ๊ณ„์† ๋ฐ”๋€Œ๋Š”๋ฐ const๋กœ ์„ ์–ธ


function MyReact{
    function (){
        let val
        useState(inivialValue){
          val = val | inivialValue
          function setState(newValue){
              val = newValue
          }
          return [val,setState]
        }
    }
}

const [counter,setCounter]=MyReact.useState(0)

 

state๋Š” ์ผ๋ฐ˜ ๋ณ€์ˆ˜์™€ ๋‹ฌ๋ฆฌ setState ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ’์„ ๋ณ€๊ฒฝ
(
ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ๋ณ€์ˆ˜๊ฐ€ ํ•จ์ˆ˜ ์ˆ˜๋ช…์ด ๋๋‚˜๋”๋ผ๋„, ๋ณ€์ˆ˜์˜ ์ฐธ์กฐ๊ฐ€ ๊ณ„์† ๋œ๋‹ค๋ฉด ๊ทธ ๋ณ€์ˆ˜์˜ ์ˆ˜๋ช…์€ ๊ณ„์† ๋œ๋‹ค.- ํด๋กœ์ €
์ด๋ ‡๊ฒŒ ์ปดํฌ๋„ŒํŠธ๊ฐ€ render ๊ฐ€ ๋˜๋”๋ผ๋„ state๋ฅผ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋‹ค.)

setState๋ฅผ ์‚ฌ์šฉํ•œ ๋ณ€์ˆ˜ ๋ณ€๊ฒฝ๋งŒ ํ—ˆ๋ฝํ•˜๊ธฐ์œ„ํ•ด const๋กœ ์„ ์–ธ
(const๋กœ ์„ ์–ธํ•˜๋ฉด ๋ณ€์ˆ˜ํ˜•ํƒœ์˜ ์žฌ ํ• ๋‹น์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.)

3. ๊ฒฐ๋ก 

์›ฌ๋งŒํ•œ ๊ฐ’์€ state๋ฅผ ์“ฐ๋˜, ์ž ๊น ๊ธฐ์–ตํ•ด์•ผํ•˜๋Š” ๊ฐ’๋งŒ ๋ณ€์ˆ˜๋ฅผ ์“ด๋‹ค.

728x90