GiantStepDEV
article thumbnail

๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ...

๐Ÿ‘‰ ๋ฆฌ์•กํŠธ 16.8 ์ด์ „ ๋ฒ„์ „์—์„œ๋Š” ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์—์„œ state๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ 16.8 ๋ถ€ํ„ฐ๋Š” useState๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์—์„œ๋„ state๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋ฒ•์€ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ์™€ ์กฐ๊ธˆ ๋‹ค๋ฅธ๋ฐ์š”.

์ด ๊ณผ์ •์—์„œ Hook์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

โญ๏ธ ๋ฐฐ์—ด ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น

  • ๋ฐฐ์—ด ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’์„ ์‰ฝ๊ฒŒ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ES6 ๋ฌธ๋ฒ• ์ค‘ ํ•˜๋‚˜ ์ž…๋‹ˆ๋‹ค.
// ์˜ˆ์ œ 1.(๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด)
const person = {
  name: 'ํ™๊ธธ๋™',
  age: 30,
  address: '์„œ์šธ์‹œ ๊ฐ•๋‚จ๊ตฌ',
  email: 'honggildong@naver.com'
}

const { name, age } = person;

// ์˜ˆ์ œ 2. (๋ฐฐ์—ด)
const colors = ['red', 'green', 'blue'];
const [firstColor, , thirdColor] = colors;

useState ์‚ฌ์šฉํ•˜๊ธฐ

  • ๋ฆฌ์•กํŠธ ํ›…(hook) ์ค‘ ํ•˜๋‚˜๋กœ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.
  • ์ƒํƒœ๊ฐ€ ๋ฐ”๋€œ๊ณผ ๋™์‹œ์— ๋ Œ๋”๋ง์„ ํ•ด์ค๋‹ˆ๋‹ค.(์ž๋™์œผ๋กœ ํ™”๋ฉด ์—…๋ฐ์ดํŠธ)
    ์˜ˆ) await ์ƒํƒœ ๋ณ€๊ฒฝ์‹œ ๋ฐ”๋กœ ์—…๋ฐ์ดํŠธ!!
  • useState ํ•จ์ˆ˜์˜ ์ธ์ž์—๋Š” ์ƒํƒœ์˜ ์ดˆ๊ธฐ๊ฐ’์„ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค.

1. ๋ฒ„ํŠผ ํด๋ฆญ์‹œ ๊ธ€์ž์ƒ‰ ๋ฐ”๊พธ๊ธฐ

import React, {useState} from "react";

const Say = () => {
  const [messages, setMessage] = useState("default");
  const onClickEnter = () => setMessage("์•ˆ๋…•ํ•˜์„ธ์š”.");
  const onClickLeave = () => setMessage("์•ˆ๋…•ํžˆ ๊ฐ€์„ธ์š”.");
  const [colorTest, setColor] = useState("purple");

  return (
    <>
      <button onClick={onClickEnter}>์ž…์žฅ</button>
      <button onClick={onClickLeave}>ํ‡ด์žฅ</button>
      <button style={{background:"blue" , color:"white", border:"none"}} onClick={()=>setMessage("ใ…Žใ…‡ใ…Žใ…‡")}>์‘์šฉํ•ด๋ณด์ฆˆ์•„</button>
      <h1 style={{color : colorTest}}>{messages}</h1>
      <button style={{color:"red"}} onClick={()=>setColor("red")}>๋นจ๊ฐ„์ƒ‰</button>
      <button style={{color:"green"}} onClick={()=>setColor("green")}>์ดˆ๋ก์ƒ‰</button>
      <button style={{color:"orange"}} onClick={()=>setColor("orange")}>์ฃผํ™ฉ์ƒ‰</button>
    </>
  );
}

export default Say;
import './App.css';

import Say from './0411_4_Say';

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

export default App;

2. ์‹ค์‹œ๊ฐ„ ์‹œ๊ฐ„ ๋ณด์—ฌ์ฃผ๊ธฐ

import React, {useState} from "react";

const Clock = () => {
  const [currentDate, setDate] = useState(new Date());
  const tick = () => {
    setDate(new Date());
  }
  setInterval(tick, 1000);

  return (
    <div>
      <h1>ํ˜„์žฌ ์‹œ๊ฐ„์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.</h1>
      <h2>ํ˜„์žฌ ์‹œ๊ฐ„์€ {currentDate.toLocaleTimeString()} ์ž…๋‹ˆ๋‹ค.</h2>
    </div>
  );
}

export default Clock;
import './App.css';

import Clock from './0411_5_Clock';

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

export default App;

profile

GiantStepDEV

@kongmi

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!