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 ๋ก ์ผ์น ์ํค๊ธฐ ๋ชฉ์์ผ๊น์ง
'๐ฑ SeSac > ๊ณต๋ถ ๊ธฐ๋ก (๋ณต์ตํ๋ฉฐ ์ ๋ฐ์ดํธ ์ค)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[220623 / Day 33] todo-list (0) | 2022.07.07 |
---|---|
[220620 / Day 32] styled components, react swiper, ๊ฒ์ํ ๋ง๋ค๊ธฐ (0) | 2022.07.07 |
[220616 / Day 30] React-Router (0) | 2022.07.05 |
[220615 / Day 29] promise, fetch, async await, axios, useEffect (0) | 2022.07.05 |
[220613 / Day 28] react icons, filter (0) | 2022.07.05 |