[React] ์ปดํฌ๋„ŒํŠธ์™€ state
web/react

[React] ์ปดํฌ๋„ŒํŠธ์™€ state

1. Component

  • ์ปดํฌ๋„ŒํŠธ(Component)๋ž€, ๋ฆฌ์•กํŠธ์˜ ๊ธฐ๋ณธ ๋‹จ์œ„๋กœ, UI๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐœ๋ณ„์ ์ธ ๋ทฐ ๋‹จ์œ„์ด๋‹ค.
  • ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ๋ณต์žกํ•œ ํ™”๋ฉด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์ถœ์ฒ˜: https://kss7547.tistory.com/26

  • ์ปดํฌ๋„ŒํŠธ๋Š” JavaScript์˜ ํ•จ์ˆ˜ ํ˜•ํƒœ๋กœ ๊ตฌํ˜„๋œ๋‹ค.
  • ์ปดํฌ๋„ŒํŠธ๋Š” ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ปดํฌ๋„ŒํŠธ ํด๋ž˜์Šค์˜ ์ด๋ฆ„์€ ์ฒซ ๊ธ€์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ์ž‘์„ฑํ•œ๋‹ค. (์ปดํฌ๋„ŒํŠธ ํด๋ž˜์Šค: ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ฐ์–ด๋‚ด๋Š” ๊ณต์žฅ)

 

2. State

  • setState(): ์ปดํฌ๋„ŒํŠธ์˜ state ๊ฐ์ฒด์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
  • state๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด, ์ปดํฌ๋„ŒํŠธ๋Š” ๋ฆฌ๋ Œ๋”๋ง๋œ๋‹ค.
  • state๋Š” ๋™์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ์‹์œผ๋กœ, Hooks์ค‘ ํ•˜๋‚˜์ธ useState๋ฅผ ํ†ตํ•ด ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.
  • state๋Š” ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์ปดํฌ๋„ŒํŠธ์— ์ „๋‹ฌ๋˜๋Š” props์™€ ๋‹ฌ๋ฆฌ, ํ•จ์ˆ˜ ๋‚ด์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ ๊ด€๋ฆฌ๋œ๋‹ค.
import React, {useState} from "react";

function Counter() {
    const [counter, setCounter] = useState(0);
    
    <>
    
    <div className="counter">This is {counter}</div>
    <button onClick = {() => { setCounter(counter+1);}} >
    plus
    </button>
    
    </>
    return ();
  }
  
  export default Counter;
  • const [counter, setCounter] = useState(0);
    • useState()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋Š” ํ˜„์žฌ ์ƒํƒœ ๊ฐ’ ๋ณ€์ˆ˜์ด๊ณ , ๋‘ ๋ฒˆ์งธ ์›์†Œ๋Š” ์ƒํƒœ ๊ฐ’์„ ๊ฐฑ์‹ ํ•ด์ฃผ๋Š” Setter ํ•จ์ˆ˜์ด๋‹ค.
    • useState ๊ด„ํ˜ธ ์•ˆ์˜ ๊ฐ’์€ ์ƒํƒœ์˜ ์ดˆ๊ธฐ ๊ฐ’์ด๋‹ค.
    • const [์ƒํƒœ ๊ฐ’ ์ €์žฅ ๋ณ€์ˆ˜, ์ƒํƒœ ๊ฐ’ ๊ฐฑ์‹  ํ•จ์ˆ˜] = useState(์ƒํƒœ ์ดˆ๊ธฐ ๊ฐ’);
  •  onClick = {() => { setCounter(counter+1);}}
    • setCounter(): ์ƒํƒœ ๊ฐ’ ๊ฐฑ์‹  ํ•จ์ˆ˜์ด๋‹ค.
    • setCounter ํŒŒ๋ผ๋ฏธํ„ฐ์—๋Š” ์—…๋ฐ์ดํŠธ ํ•  ์ƒˆ๋กœ์šด ๊ฐ’์„ ๋„ฃ์–ด์ค€๋‹ค.
    • setCounter(preNum => preNum + 1)๊ณผ ๊ฐ™์ด ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋„ฃ์–ด ๊ฐ’์„ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

 

 

 

 

 

[ ์ฐธ๊ณ  ]

https://xiubindev.tistory.com/97

'web > react' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[React] props  (0) 2021.09.15
[React] useEffect  (0) 2021.09.15
[React] ๋ฆฌ์•กํŠธ ์‹œ์ž‘ํ•˜๊ธฐ  (0) 2021.09.13