์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ๋ธ๋ก๊ทธ
- CSS
- useRef
- REACT
- position
- history api
- fetch API
- Props
- ์๋ฐ์คํฌ๋ฆฝํธ
- Gatsby
- Flex
- ํ๋ก๊ทธ๋๋จธ์ค
- float
- useEffect
- ๋ฐ๋ธ์ฝ์ค3๊ธฐ
- ๋ฐ๋ธ์ฝ์ค
- ์๊ณ ๋ฆฌ์ฆ
- ํ๋ก ํธ์๋
- ์ฝ๋ฉํ ์คํธ
- Today
- Total
๋ชฉ๋ก๐ Language & CS knowledge/React (13)
Daehyunii's Dev-blog
๋ฆฌ์กํธ ๋ผ์ดํ์ฌ์ดํด? ๋ฆฌ์กํธ ์ปดํฌ๋ํธ์ ์๋ช ์ฃผ๊ธฐ์ด๋ค. ์ฝ๊ฒ ๋งํด, ์ปดํฌ๋ํธ๊ฐ ์์ฑ๋๊ณ ์๋ฉธ๋๋ ์ด๋ จ์ ๊ณผ์ ์ ๋ผ์ดํ ์ฌ์ดํด์ด๋ผ๊ณ ํ๋ค. ์ฐธ๊ณ ๋ก ๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋๋ ํด๋์คํ ์ปดํฌ๋ํธ์์๋ง ์ฌ์ฉํ ์ ์๋ค. ํจ์ ์ปดํฌ๋ํธ์์๋ Hooks ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ๋น์ทํ ์์ ์ ์ฒ๋ฆฌํ ์๋ ์๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ฆฌ์กํธ๋ฅผ ์์ฑํ ๋ ํจ์ํ ์ปดํฌ๋ํธ๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ฏ๋ก '์ด๋ฐ ๊ฒ๋ค์ด ์๊ตฌ๋'ํ๊ณ ๋๋ผ๊ณ ํจ์ ์ปดํฌ๋ํธ์์๋ ์ด๋ฅผ ์ด๋ป๊ฒ ๋น์ทํ๊ฒ Hooks๋ก ๋ง๋ค์๋์ง ๋น๊ตํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค. ์ค๋์ classํ ์ปดํฌ๋ํธ ๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋๋ค์ ๋ํด์๋ง ๋ค๋ค๋ณด๋๋ก ํ๊ฒ ๋ค. ์ฐ์ ๋ผ์ดํ์ฌ์ดํด์ ์ด ์ธ ๊ฐ์ง ๊ธฐ์ค์ผ๋ก ๋๋ ๋ณผ ์ ์๋ค. 1. ๋ง์ดํธ DOM์ด ์์ฑ๋๊ณ ์น ๋ธ๋ผ์ฐ์ ์์ ๋ํ๋ ๋๋ฅผ ์๋ฏธํ๋ค. 2. ์ ๋ฐ์ดํธ ๋ฐ์ดํฐ๊ฐ ๋ณ..
map( ) ํจ์์ ํ์ฉ map ํจ์๋ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ๋ ํจ์๋ฅผ ์ฌ์ฉํด์ ๋ฐฐ์ด ๋ด ๊ฐ ์์๋ฅผ ์ํ๋ ๊ท์น์ ๋ฐ๋ผ ๋ณํํ ํ ๊ทธ ๊ฒฐ๊ณผ๋ก ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํด ๋ฐํํ๋ค. map( ) ํจ์์ ๋ฌธ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค. ์ฒซ ๋ฒ์งธ ์ธ์๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ๋ฐ๋๋ค. ์ฝ๋ฐฑ ํจ์์ ์ธ์๋ก๋ (value, index, array) ์ธ ๊ฐ์ง๋ฅผ ๋ฐ๋๋ค. -value: ํ์ฌ ๋ฐ๋ณต๋๊ณ ์๋ array์์ ๊ฐ -index: ํ์ฌ ๋ฐ๋ณต๋๊ณ ์๋ array์์์ index๊ฐ -array: ํ์ฌ ๋ฐ๋ณต๋๊ณ ์๋ ๋ฐฐ์ด ๊ทธ ์์ฒด ex) array.map((value,index,array) => { }) ๋ ๋ฒ์งธ ์ธ์๋ callback ํจ์ ๋ด๋ถ์์ ์ฌ์ฉํ this ๋ ํผ๋ฐ์ค๋ฅผ ๋ฐ๋๋ค. const numbers = [1, 2, 3, 4, 5]; cons..
//์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์๋ก ํํ const EmojiList = ({ emojis, keyword }) => { return ( {emojis.map((emoji) => { return keyword === "" ? ( ) : emoji.title.includes(keyword) || emoji.keywords.includes(keyword) ? ( ) : undefined; })} ); }; export default EmojiList; ๋ฐ๋ธ์ฝ์ค ๋ฆฌ์กํธ ๊ฐ์๋ฅผ ๋ค์ผ๋ฉด์ ์ค์ต์ ํ๋ ์ค์ ๊ฒ์์ ํตํด ์ผ์นํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ ๋๋งํ๋ ๊ธฐ๋ฅ์ ๋ง๋ค๊ฒ ๋์๊ณ , ๊ฐ์์ ํด๋น ๋ถ๋ถ์ ๋ฃ๊ธฐ์ ์ ์ค์ค๋ก ๋จผ์ ๋ง๋ค์ด๋ณด๋ฉด ์ข๊ฒ ๋ค๋ ์๊ฐ์ผ๋ก ์ฝ๋๋ฅผ ๋จผ์ ๊ตฌํํด ๋ณด์๋ค. ์ฌํ๊น์ง ์กฐ๊ฑด๋ฌธ ๋์ ์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์, ๋ ผ๋ฆฌ ๊ณฑ(&&), ..
const EmojiListItem = ({ emoji }) => { return ( navigator.clipboard.writeText(emoji.symbol)}> {/* navigator.clipboard.writeText(emoji.symbol)}> ์ด๊ฒ ๊ฐ๋จํ๊ฒ ๋ณต์ฌํ๋ ๋ฐฉ๋ฒ์! */} {emoji.symbol} {emoji.title} {emoji.keywords} ); }; click์ด๋ฒคํธ ๋ฐ์์, clipboard์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
ref : DOM์ ์ด๋ฆ ๋ฌ๊ธฐ 1. ref๋ ์ด๋ค ์ํฉ์์ ์ฌ์ฉํด์ผ ํ ๊น? ref๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ํฉ์ ํ ๋ฌธ์ฅ์ผ๋ก 'DOM์ ๊ผญ ์ง์ ์ ์ผ๋ก ๊ฑด๋๋ ค์ผ ํ ๋'์ด๋ค. ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ์์ DOM ์์๋ฅผ ์กฐ์ํ๋๊ฒ๊ณผ ์ ์ฌํ๋ค. ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ์์๋ DOM์ ์ง์ ๊ฑด๋๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ๊ต์ฅํ ๋ง์์ง๋ง, ๋ฆฌ์กํธ์์๋ ๊ตณ์ด DOM์ ์ ๊ทผํ์ง ์์๋ state๋ก ๊ตฌํํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. 2. DOM์ ๊ผญ ์ฌ์ฉํด์ผ ํ๋ ์ํฉ์ ์ธ์ ์ผ๊น? ํน์ input์ ํฌ์ปค์ค ์ฃผ๊ธฐ ์คํฌ๋กค ๋ฐ์ค ์กฐ์ํ๊ธฐ canvas ์์์ ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๊ธฐ ๋ฑ ๋ง์ ์ํฉ์ด ์๊ณ ์ด์ฉ ์ ์์ด DOM์ ์ง์ ์ ์ผ๋ก ์ ๊ทผํด์ผ ํ๋ค. ์ด๋ฐ ์ํฉ์์ ref๋ฅผ ์ฌ์ฉํ๋ค. 3. ref ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ref๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ํด๋์คํ๊ณผ ํจ์ํ์ ๋ฐ๋ผ ์์ฑ ๋ฐฉ๋ฒ..
๋ฆฌ์กํธ์ ์ด๋ฒคํธ ์์คํ ๋ฆฌ์กํธ์ ์ด๋ฒคํธ ์์คํ ์ ์น ๋ธ๋ผ์ฐ์ ์ HTML ์ด๋ฒคํธ์ ์ธํฐํ์ด์ค๊ฐ ๋์ผํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ๋ฒ์ด ๊ฝค ๋น์ทํ๋ค. ๋ค๋ง ์ฃผ์ํด์ผ ํ ์ฌํญ์ด ๋ช ๊ฐ์ง ์กด์ฌ ํ๋ค. ์ด๋ฒคํธ ์ด๋ฆ์ ์นด๋ฉ ํ๊ธฐ๋ฒ์ผ๋ก ์์ฑํ๋ค. ์๋ฅผ ๋ค์ด HTML์ onclick์ ๋ฆฌ์กํธ์์๋ onClick์ผ๋ก ์์ฑํด์ผ ํ๋ค. ์ด๋ฒคํธ์ ์คํํ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ด ์๋๋ผ, ํจ์ ํํ์ ๊ฐ์ฒด ๊ฐ์ ์ ๋ฌํด์ผ ํ๋ค. DOM ์์์๋ง ์ด๋ฒคํธ๋ฅผ ์ค์ ํ ์ ์๋ค. ์ง์ ๋ง๋ ์ปดํฌ๋ํธ์ ์ด๋ฒคํธ๋ฅผ ์์ฒด์ ์ผ๋ก ์ค์ ํ ์ ์๊ธฐ ๋๋ฌธ์ onClick ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํ๋ ค๊ณ ํ๋ค๋ฉด ๊ทธ๊ฒ์ ๊ทธ๋ฅ ์ด๋ฆ์ด onClick์ธ props๋ฅผ ์ ๋ฌํด ์ค ๋ฟ์ด๋ค. input ์ฌ๋ฌ ๊ฐ ๋ค๋ฃจ๊ธฐ setState๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ง๋ค์ด ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ๋ ์์ ์ ..
ํจ์ํ ์ปดํฌ๋ํธ์ ํด๋์คํ ์ปดํฌ๋ํธ์ ์ฐจ์ด์ 1. ํด๋์คํ ์ปดํฌ๋ํธ์ ๊ฒฝ์ฐ state ๊ธฐ๋ฅ, ๋ผ์ดํ ์ฌ์ดํด ๊ธฐ๋ฅ์ ์ฌ์ฉ ๋ฐ ์์ ๋ฉ์๋ ์ ์๊ฐ ๊ฐ๋ฅํ๋ค. 2. ํจ์ ์ปดํฌ๋ํธ์ ๊ฒฝ์ฐ ํด๋์คํ ์ปดํฌ๋ํธ์ ๋นํด ๋ฉ๋ชจ๋ฆฌ ์์์ ๋ ์ฌ์ฉํ๋ค.(์ ์๋ฏธํ ์ฐจ์ด๋ ์๋๋ผ๊ณ ํจ) 3. ํจ์ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐฐํฌํ ๋ ๊ฒฐ๊ณผ๋ฌผ์ ํ์ผ ํฌ๊ธฐ๊ฐ ๋ ์๋ค.(์ ์๋ฏธํ ์ฐจ์ด๋ ์๋๋ผ๊ณ ํจ) 4. ํจ์ ์ปดํฌ๋ํธ์ ๊ฒฝ์ฐ์๋ ํด๋์คํ ์ปดํฌ๋ํธ์์์ ๋ผ์ดํ ์ฌ์ดํด ๊ธฐ๋ฅ ๋์ Hooks๋ฅผ ํตํด ํด๊ฒฐ ๊ฐ๋ฅํ๋ค. props ๊ธฐ๋ณธ๊ฐ ์ค์ : defaultProps ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก ๋ถํฐ prop์ ์ ๋ฌ ๋ฐ์ง ์์ ๊ฒฝ์ฐ์ defaultProps๋ฅผ ์ค์ ํ ์ ์๋ค. const MyComponent = (props) => { return ์๋ ํ์ธ..
JSX๋? ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ฅ ๋ฌธ๋ฒ์ด๋ฉฐ XML๊ณผ ๋งค์ฐ ์ ์ฌํ๋ค. ์ฐ์ JSX๋ ๋ธ๋ผ์ฐ์ ์์ ์คํ๋๊ธฐ ์ ๋ฒ๋ค๋ง๋๋ ๊ณผ์ ์์ ๋ฐ๋ฒจ์ ํตํด ์ผ๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ ํํ์ ์ฝ๋๋ก ๋ณํ๋๋ค. ๋ค์ ์์ ๋ฅผ ์ดํด๋ณด์. JSX function App() { return ( Hello react ) } ๋ณํ function App() { return React.createElement("div", null, "Hello", React.createElement("b", null, "react")) } ์ด ์ฒ๋ผ JSX๋ฅผ ํตํด์ ์ฐ๋ฆฌ๋ JavaScript๋ก ์์ฑํด์ผ ํ๋ ์ฝ๋๋ค์ ๊ฐ๋ตํ๊ณ ์๊ฐ์ ์ผ๋ก๋ ๋ณด๊ธฐ ์ข๊ฒ ํํํ ์ ์๋ค. ํ ๋ง๋๋ก JSX๋ ๋ณด๊ธฐ ์ฝ๊ณ ์ฐ๋ฆฌ์๊ฒ ์ต์ํ ํํ๋ก ์์ฑ๋๋ค. ๋ํ JSX ๋ฌธ๋ฒ์ ํ์ฉํ๋ฉด ์ปดํฌ๋ํธ..