react06-30day

main.jsx

useState ๋กœ ๋ˆ„๋ฅด๋ฉด ํ•œ ํƒญ์”ฉ ๋ณด์ด๊ฒŒ ํ•  ๊ฒƒ

ํด๋ฆญํ–ˆ์„ ๋•Œ num ์„ ์˜ฌ๋ฆฌ๋„๋ก ํ•จ์ˆ˜ ํ˜ธ์ถœ

ํด๋ฆญ์ด ๋  ๋•Œ๋งˆ๋‹ค setNum ํ•จ์ˆ˜ ํ˜ธ์ถœ ๊ทธ๊ฒŒ 0~3๊นŒ์ง€ ์™”๋‹ค๊ฐ”๋‹คํ•ด์•ผํ•จ ์ปจํ…์ธ ๊ฐ€ 0,1,2,3 ๊นŒ์ง€ ์žˆ์œผ๋‹ˆ๊นŒ

num ์ด 0๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด 3, ์•„๋‹ˆ๋ฉด -1 : ์ˆœํ™˜ํ•˜๋„๋ก, num ์ด

li ๊ฐœ์ˆ˜๋งŒํผ์˜ ๋ฐฐ์—ด ๋งŒ๋“ค์–ด์„œ ์“ฐ๊ธฐ :

const listData = ['content01', 'content02', 'content03', 'content04'];

listData ๊ฐ€ ๋ฐฐ์—ด์ด 4๊ฐœ๋‹ˆ๊นŒ map ์œผ๋กœ ๋Œ๋ฆฌ๋ฉด ์ด 4๊ฐœ li ๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒƒ

'view_01 on' ๋Œ€์‹  ๋‹ค๋ฅธ ์ด๋ฆ„ ์“ธ ๊ฒƒ

// i๋ž‘ num์ด ์ผ์น˜ํ•  ๋•Œ๋งŒ on, ์•„๋‹ˆ๋ฉด ์—†๋„๋ก ์„ค์ •

        const on = (i === num ? ' on' : '');

 

์˜†์œผ๋กœ ์Šฌ๋ผ์ด๋“œ ํ•˜๊ธฐ

- 4์—์„œ ์˜†์œผ๋กœ ํ•˜๋ฉด 1๋กœ ๊ฐ€๋Š”๊ฑฐ ์™ผ์ชฝ์ด ์•„๋‹ˆ๋ผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ:

css ๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํ•ด๋†“๊ณ 

listData ์— ์•ž์— ํ•œ์žฅ ๋” ๋ถ™์ž„

๋‹ค์„ฏ์žฅ์ด ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ width: 500%;

- 1์—์„œ ์™ผ์ชฝ์œผ๋กœ ํ•˜๋ฉด 4๋กœ ๊ฐ€๋Š”๊ฑฐ ์–ด์ƒ‰:

 

main.css

css ์—์„œ ๋ณ€์ˆ˜๊ฐ’ ์“ฐ๊ธฐ

-  --๋ณ€์ˆ˜์ด๋ฆ„ : ์†์„ฑ๊ฐ’; ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ด์šฉ๊ฐ€๋Šฅ, ํ•ด๋‹น ์š”์†Œ ์•ˆ์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ, ์ด๋ฆ„์€ ๋งˆ์Œ๋Œ€๋กœ, ex) --list-size: 1200px;

-  ์‚ฌ์šฉํ•  ๋•Œ๋Š” width: var(--list-size); ์ด๋Ÿฐ ์‹์œผ๋กœ

 

useRef

๋”์— ์ง์ ‘ ์ ‘๊ทผํ•  ๋•Œ ์“ฐ๋Š” ํ›…, ์Šคํฌ๋กค์ด๋‚˜ ํผ, ๋น„๋””์˜ค ์ œ์–ดํ•  ๋•Œ ์šฐํšŒํ•  ๋ฐฉ๋ฒ• ์—†์–ด ๋„ํ๋จผํŠธ ์ง์ ‘์„ ํƒํ•  ์ˆ˜ ์—†๋‹ค ๊ทธ๋Ÿด ๋•Œ ์“ฐ๋Š” ref, ํผ ์„ ํƒํ•ด์˜ฌ ๋•Œ ๋งŽ์ด ์‚ฌ์šฉ, ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ ๋ฉ”๋ชจ๋ฆฌ ์ ˆ์•ฝํ•  ๋ฐฉ๋ฒ•์œผ๋กœ ์”€

์ง€๊ธˆ์€ ์Šคํ…Œ์ดํŠธàref ์œผ๋กœ ๋ฐ”๊ฟ€ ๊ฒƒ

์Šคํ…Œ์ดํŠธ๋Š” ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ ๋‹ค์‹œ ๋žœ๋”๋ง ๊ฐ’์ด ๋ฐ”๋€Œ๋ฉด ์ƒˆ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๊ฐ’์„ ๋„ฃ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์žฌํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ์žฌ๋žœ๋”๋ง ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์ง ๋‹ค์‹œ ๋žœ๋”๋ง์„ ๋งŽ์ด ํ•˜๊ฒŒ ๋˜๋ฉด ๋А๋ ค์ง€๊ฒŒ ๋จ ์Šคํ…Œ์ดํŠธ๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ๋А๋ ค์ง ๊ทธ๋ž˜์„œ ๊ทธ๊ฑธ ๋ง‰์•„์ฃผ๊ธฐ ์œ„ํ•ด ref ์‚ฌ์šฉํ•  ๊ฒƒ, à ๊ฐ’์ด ๋ฐ”๋€Œ๋ฉด ํ•ด๋‹นํ•˜๋Š” ๋ณ€์ˆ˜์— ๊ฐ’์„ ์žฌํ• ๋‹นํ•˜๊ธฐ(์—…๋ฐ์ดํŠธ)์œ„ํ•ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‹ค์‹œ ๋žœ๋”๋งํ•œ๋‹ค.

ref ๋Š” ๊ฐ’์ด ๋ฐ”๋€Œ๋”๋ผ๋„ ๋ฆฌ๋žœ๋”๋ง์ด ๋˜์ง€ ์•Š๋Š”๋‹ค. ํ•œ๋ฒˆ ๋žœ๋”๋ง๋˜๋ฉด ๊ทธ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ

๋ ˆํผ๋Ÿฐ์Šค์˜ ์•ฝ์ž ์ธํ’‹์ด๋‚˜ ์ง์ ‘ ์„ ํƒํ•ด์•ผํ•˜๋Š” ์š”์†Œ๋ฅผ ๋‹ด๋Š”๋ฐ ์ฟผ๋ฆฌ์…€๋ ‰ํ„ฐ ์šฉ๋„๋กœ ๋งŽ์ด ์”€ ๋ถˆ๋ณ€์˜ ๊ฐ’์ด๋ฉด ์จ๋„ ๋จ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ์•ˆ๋จ

 

form.jsx

ref={ writer } à writer ๋ผ๋Š” ๊ฐ์ฒด ํ˜•ํƒœ์˜ ๋ณ€์ˆ˜๊ฐ€ ๋Œ€์ž…, writer ๋ผ๋Š” ๋ณ€์ˆ˜์— ๋”์ด ์ฐธ๊ณ ๊ฐ€ ๋œ ์ƒํƒœ

console.log(writer) à Object {current: input } ๋‚˜์˜ค๋Š”๋ฐ writer ๋Š” ๊ฐ์ฒด ํƒ€์ž…์ด๊ธฐ ๋•Œ๋ฌธ์— object ๋ผ๊ณ  ๋œจ๋Š”๊ฑฐ๊ณ  ๊ทธ ํ‚ค ๊ฐ’์€ current, value ์ฆ‰ ํ”„๋กœํผํ‹ฐ๋Š” input

writer.current à input ์ด๋ผ๋Š” ์š”์†Œ๊ฐ€ ๋ถˆ๋Ÿฌ์ง€๋Š” ๊ฒƒ

๋”ฐ๋ผ์„œ ๊ทธ๋ƒฅ writer ๋งŒ ๋ถˆ๋Ÿฌ์˜ค๋ฉด ๋ƒ…๋‹ค object ๋งŒ ๋ถˆ๋Ÿฌ์ง€๋Š” ๊ฒƒ

{current: undefined} à ์ด๋ ‡๊ฒŒ ๋‚˜์˜ค๋Š” ์ด์œ ๋Š” input ์— value ๊ฐ’์„ ๋„ฃ์ง€ ์•Š์•„์„œ, input ์€ ์ž…๋ ฅ์ฐฝ์ด๊ธฐ ๋•Œ๋ฌธ์— value ๊ฐ’์„ ๋”ฐ๋กœ ๋„ฃ์–ด์•ผ ํ•จ ๊ทธ๋Ÿฌ๋‚˜ value='ํ™๊ธธ๋™' ์ด๋ผ๊ณ  ๋”ฐ๋กœ ๋„ฃ์–ด๋†“์œผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋œธ ๊ทธ ์ด์œ ๊ฐ€ ์˜จ์ฑ„์ธ์ง€๋ผ๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉด ์ƒ๊ด€์—†๋Š”๋ฐ ์˜จ์ฑ„์ธ์ง€๊ฐ€ ์—†์œผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋œธ, ๋””ํดํŠธ๋ฐธ๋ฅ˜, ๋ฆฌ๋“œ์˜จ๋ฆฌ๊ฐ€ ์—†์œผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋œธ, ๋ฐธ๋ฅ˜๊ฐ€ ์žˆ์œผ๋ฉด ์•ˆ๋œจ๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๊ด€์€ ์—†์Œ

 

writer: '',

        content: '',

        grade: 50

à ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜๋Š” ์–˜๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ํ• ๊ฑฐ์ž„, ...state

 

 

 

 

* ์ƒ์„ธํŽ˜์ด์ง€ ๊ณผ์ œ

1. ๊ณ„ํš

2. ์‹คํ–‰

3. ์˜ค๋ฅ˜

4. ํ•ด๊ฒฐ

5. ๋ฏธํ•ด๊ฒฐ

์ƒ์„ธํŽ˜์ด์ง€๊นŒ์ง€ ์žˆ์œผ๋ฉด ๋ฌด๊ฑฐ์›Œ์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ž‘ ์ƒ์„ธํŽ˜์ด์ง€ ๋ฐ์ดํ„ฐ ๋”ฐ๋กœํ•ด์„œ id ๋‚˜ index ๋กœ ์ผ์น˜ ์‹œํ‚ค๊ธฐ ๋ชฉ์š”์ผ๊นŒ์ง€

+ Recent posts