์๋ฒ์๊ฒ ๋ฐ์ดํฐ ์์ฒญํ ๋ ์ ์ ๊ฐ ๊ทธ๋ฅ ๋ฐ์ดํฐ ๋ฌ๋ผ๊ณ ํ๋ฉด ์๋ฒ๊ฐ ๋ณด๋ด์ฃผ์ง ์์ต๋๋ค. ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ๋๋ ์ ํํ ๊ท๊ฒฉ์ ๋ง์ถฐ์ ์์ฒญํด์ผ ํฉ๋๋ค 1. ์ด๋ค ๋ฐ์ดํฐ์ธ์ง (URL ํ์์ผ๋ก) 2. ์ด๋ค ๋ฐฉ๋ฒ์ผ๋ก ์์ฒญํ ์ง (GET or POST) ์ ๊ธฐ์ฌํด์ผ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ค๋๋ค. ๋ณดํต, ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ๋๋ GET ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ๋๋ POST ๋ฅผ ์๋๋ค. AJAX ๋? ์๋ฒ์ GET,POST ์์ฒญ์ ํ ๋ ์๋ก๊ณ ์นจ์์ด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ๋์์ฃผ๋ ๊ฐ๋จํ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฅ์ ๋งํฉ๋๋ค. (get ์์ฒญ์ ๋ ๋ฆฌ๊ณ ์ถ์ผ๋ฉด ์ฃผ์์ฐฝ์, post์์ฒญ์ ๋ ๋ฆฌ๊ณ ์ถ์ผ๋ฉด form ํ๊ทธ๋ฅผ ์ด์ฉํ๋ฉด ๋์ง๋ง, ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ก๊ณ ์นจ๋๋ค๋ ๋จ์ ์ด ์กด์ฌ) ๊ทธ๋์ AJAX๋ฅผ ์์ฃผ ์๋๋ค. AJAX๋ก GET,POST ์์ฒญ์ ํ๋..
์ฝ๋ฉ์ ํ
useEffect(()=>{์คํํ ์ฝ๋},[count]) useEffect ์ ์ฒซ์งธ ํ๋ผ๋ฏธํฐ๋ก๋ ์คํํ ์ฝ๋๋ฅผ ๋ฃ์ด์ฃผ๊ณ , ๋์งธ ํ๋ผ๋ฏธํฐ๋ก๋ [](๋ฐฐ์ด)์ ๋ฃ์ ์ ์๋๋ฐ, []์์ ๋ณ์๋ state ๊ฐ์ ๊ฒ๋ค์ ๋ฃ์ ์ ์์ต๋๋ค ์ด๋ฐ ๊ฒฝ์ฐ์๋ [] ์ ์๋ ๋ณ์๋ state ๊ฐ ๋ณํ ๋๋ง, useEffect ์์ ์ฝ๋๋ฅผ ์คํํด์ค๋๋ค ์์ ์ฝ๋๋ count ๋ผ๋ ๋ณ์๊ฐ ๋ณํ ๋๋ง, useEffect ์์ ์ฝ๋๋ฅผ ์คํ๋๊ฒ ๊ตฐ์. useEffect(()=>{์คํํ ์ฝ๋},[]) ๋ง์ฝ๋๋ฒ์งธ ํ๋ผ๋ฏธํฐ์ ๋น ๋ฐฐ์ด์ ๋ฃ์ด์ค๋ค๋ฉด, ์ฒ์ ๋ ๋๋ง ์ 1ํ ์คํํ๊ณ ์์ ์คํํด์ฃผ์ง ์์ต๋๋ค. ์ฒ์์ ๋ฑ ํ๋ฒ๋ง ์คํํด์ค๋๋ค clean up function useEffect๋ฅผ ๋์ํ๊ธฐ ์ ์ ํน์ ์ฝ๋๋ฅผ ์คํํ๊ณ ์ถ์ผ๋ฉด ret..
์ ๋ฒ์ app.js (๋ฉ์ธํ์ด์ง) ํ์ผ์ ๋ํ
์ผ ์ปดํฌ๋ํธ๋ฅผ ํ๋ ๋ง๋ค์๋๋ฐ์ ์ฌ๊ธฐ์๋ ์ํ์ ๋ณด๊ฐ ์์ง ์ฑ์์ง์ง ์์ ์ํ์
๋๋ค. ๊ทธ๋์ props ๋ฅผ ์ฌ์ฉํด์ shoes ์ ๋ณด๋ค์ ์
๋ ฅํด๋ณผ๊ฒ์ function Detail(props){ return( {props.shoes[0].title} {props.shoes[0].content} {props.shoes[0].price}์ ์ฃผ๋ฌธํ๊ธฐ ) } export default Detail; ์ด๋ ๊ฒ ํ๋ฉด ํ์ฌ ์์ธํ์ด์ง์๋ shoes ๋ฐ์ดํฐ์ 0๋ฒ์งธ ์ ๋ณด๋ง ๋ณด์ฌ์ง๋๋ค 3๊ฐ์ ์ํ์ด ๋ชจ๋ ๋ณด์ด๋๋ก ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น์? ๋ผ์ฐํฐ๋ฅผ 3๊ฐ ๋ง๋ค๋ฉด ๋๊ฒ ์ฃ ? (์ฌ๋์ ๊ธฐํธ๋ ๋ง๋๋ก ์ฌ์ฉ๊ฐ๋ฅํ๋ฐ ๋จ์ด๊ฐ ๋์ด์ฐ๊ธฐ์ฉ์ผ๋ก ๋ง์ด ์ฌ์ฉ) ์ด๋ ๊ฒ ํ๋ฉด 3๊ฐ ํ์ด์ง ์์ฑ! ํ์ง๋ง, ๋ง์ฝ..
Open API , Rest API ๋ฑ๋ฑ ์ฌ๊ธฐ์ ๊ธฐ์ API ์ด์ผ๊ธฐ ํ๋๋ฐ ๋ญ์๋ฆฐ์ง ์ ๋ชจ๋ฅด๊ฒ ์ฃ ? ์ ๋ ๊ฐ์ด ์ ๋ฆฌํด๋ด
์๋ค API ๋? Application Programming Interface ํ ํ๋ก๊ทธ๋จ์์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ๋ฐฉ๋ฒ ์ฝ๊ฒ ๋งํด์, ๋ฉ๋ดํ์ด๋ค! ์ฐ๋ฆฌ๊ฐ ์๋น์์ ์ฃผ๋ฌธ์ ํ๋ค๊ณ ๊ฐ์ ํด๋ณด์ฃ . ์ค๊ตญ์ง๊ฐ์ ์นํจ ๋จน๊ณ ์ถ๋ค๊ณ ์นํจ์ ์ํฌ์๋ ์์ฃ ? ์ฐ๋ฆฌ์ ์ ํ๊ถ์ ํ์ ์์ผ์ฃผ๋ '๋ฉ๋ดํ'์ด ํ์ํ๊ฒ ์ฃ . ์ฃผ์ธ์ด ๋ฉ๋ดํ์ ๋ง๋ค๋ฉด, ๊ทธ ์์์ ์ฐ๋ฆฌ๊ฐ ์์์ ๊ณ ๋ฅด๊ฒ ๋์ฃ . ๋ฉ๋ดํ์ด ์๋น์ API ๊ฐ ๋๋ ๊ฒ๋๋ค. ์๋น๊ณผ ์๋์ด ์์์ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉ๋๋๊น์ ํ๋ก๊ทธ๋จ ์ธก๋ฉด์์ ์๊ฐํด๋ณด์ฃ . ์ํ๋ฅผ ๋ณด์ฌ์ฃผ๋ ํ๋ก๊ทธ๋จ์ด ์์ต๋๋ค ์ฌ๊ธฐ์ ๋ด๊ฐ ๋ง์๋๋ก '์๋ํ๋'์ ์์ฒญํ๋ฉด ์ด๋ป๊ฒ..
Input box ์ข
๋ฅ โ ์ด๊ฑฐ ๋ง๊ณ ๋ ๋ค์ํ ์ข
๋ฅ์ ์ธํ ๋ฐ์ค๊ฐ ๋ง์ผ๋ ํ์ํ ๋ ์ฐพ์์ฐ๊ธฐ ์ ๋ญ๊ฐ ์
๋ ฅํ๋ฉด, ์ฝ๋๊ฐ ์คํ๋๋๋ก ์ด๋ด๋ onChange ์๋๋ฉด onInput ์ด๋ฒคํธํธ๋ค๋ฌ๋ฅผ ๋ถ์ฐฉํ๋ฉด ๋ฉ๋๋ค {์คํํ ์ฝ๋}}/> ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ ๋ง๋ค onMouseOver={ } ์ด๊ฑด ์ด ์์์ ๋ง์ฐ์ค๋ฅผ ๋์ ๋ ์์ ์ฝ๋๋ฅผ ์คํํด์ค onScroll={ } ์ด๊ฑด ์ด ์์๋ฅผ ์คํฌ๋กค ํ์๋ ์์ ์ฝ๋๋ฅผ ์คํํด์ค ์
๋ ฅ๊ฐ์ ๊ฐ์ ธ์ค๋ ๋ฒ {console.log(e.target.value)}}/> e๋ผ๋ ํ๋ผ๋ฏธํฐ๋ฅผ ์ถ๊ฐํ๊ณ , e.target.value๋ฅผ ์ฐ๋ฉด ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์์ ์ฐธ๊ณ ๋ก e๋ง๊ณ ์๋ช
์์ ๋กญ๊ฒ ํด๋๋จ e.target => ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ html e.preventDefault()=> ์ด๋ฒค..
์์ state๋ฅผ ์ฐ๋ ค๊ณ ํ๋๋ฐ ๋ฌธ์ ๊ฐ ์์ function App (){ let [๊ธ์ ๋ชฉ, ๊ธ์ ๋ชฉ๋ณ๊ฒฝ] = useState(['๋จ์์ฝํธ ์ถ์ฒ', '๊ฐ๋จ ์ฐ๋๋ง์ง', 'ํ์ด์ฌ๋
ํ']); return ( ) } function Modal(){ return ( { ๊ธ์ ๋ชฉ[0] } ๋ ์ง ์์ธ๋ด์ฉ ) } ํ์ง๋ง, '๊ธ์ ๋ชฉ'์ด๋ผ๋ ๋ณ์๊ฐ define ๋์ง ์์๋ค๊ณ ์๋ฌ๊ฐ ๋น๋๋ค ์๋๋ฉด ๊ธ์ ๋ชฉ์ด๋ผ๋ state ๋ณ์๋ function App()์ ์์ง function Modal() ์์ ์์ง ์์ผ๋๊น์ ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๋ค๋ฅธํจ์์ ์๋ ๋ณ์๋ฅผ ๋ง์๋๋ก ๊ฐ์ ธ๋ค ์ธ ์ ์์ต๋๋ค ๋ค๋ฅธ ํจ์์ ๋ณ์๋ฅผ ๊ฐ์ ธ๋ค ์ฐ๋ ค๋ฉด? ์ปดํฌ๋ํธ 2๊ฐ๊ฐ ๋ถ๋ชจ/์์ ๊ด๊ณ์ธ ๊ฒฝ์ฐ์ ๊ฐ๋ฅํฉ๋๋ค. (ํ ์ปดํฌ๋ํธ๊ฐ ๋ค๋ฅธ ์ปดํฌ๋ํธ ์์ ์๋ ๊ฒฝ์ฐ) ๋ถ๋ชจ ..
๋ชจ๋ array ์๋ฃ ์ค๋ฅธ์ชฝ์๋ map()์ ๋ถ์ผ ์ ์์ต๋๋ค map ํจ์ ์ฐ๋๋ฒ ๊ธฐ๋ฅ1. var ์ด๋ ์ด = [2,3,4]; ์ด๋ ์ด.map(function(){ // ์ด ์์ ์ฝ๋๋ฅผ ์ด๋ ์ด์์ ๊ฐฏ์๋งํผ ์คํํด์ฃผ์ธ์~ console.log(1) }); ์ด๋ ์ด์ ๋ค์ด์๋ ์์ ๊ฐฏ์๋งํผ {}์ ์ฝ๋๋ฅผ ๋ฐ๋ณต์คํํด์ค๋ค ์ ๋ฌ๋ฉด ์ง์ง๋ก console.log(1) 3๋ฒ ์คํ๋จ ๊ธฐ๋ฅ2. var ์ด๋ ์ด = [2,3,4]; ์ด๋ ์ด.map(function(a){ // ์ด๋ ์ด ์์ ์๋ ์์๋ค์ ํ๋์ฉ ์ถ๋ ฅํด์ฃผ์ธ์~ console.log(a) }); ์ฝ๋ฐฑํจ์ ์์ ํ๋ผ๋ฏธํฐ(a)๋ฅผ ์๋ช
ํ๋ฉด, ๊ทธ ํ๋ผ๋ฏธํฐ๋ ์ด๋ ์ด์ ์์๋ค์ ํ๋์ฉ ์ถ๋ ฅํด์ค๋๋ค ์ ๋ฌ๋ฉด ์ง์ง๋ก 2, 3, 4๊ฐ ์ฝ์์ฐฝ์ ์ถ๋ ฅ๋จ ๊ธฐ๋ฅ3. var ์ด๋ ์ด = [2,3,4]..
๋ฆฌ๋์ ์ธ UI ๊ฐ ๋ญ๋๋ฉด, ์ ์ ๊ฐ ์กฐ์์ ํํ๊ฐ ๋ฐ๋๋ ๋ชจ๋ฌ์ฐฝ, ํญ, ์๋ธ๋ฉ๋ด, ํดํ, ๊ฒฝ๊ณ ๋ฌธ ๋ฑ ๊ทธ๋ฐ UI๋ฅผ ์๋ฏธํฉ๋๋ค. ๋์ ์ธ UI ๋ง๋๋ ๋ฐฉ๋ฒ 1. html, css๋ก ๋ฏธ๋ฆฌ UI ๋์์ธ์ ๋ค ํด๋๊ณ 2. UI์ ํ์ฌ์ํ๋ฅผ state ๋ก ์ ์ฅํด๋๊ณ 3. state์ ๋ฐ๋ผ์ UI ๊ฐ ์ด๋ป๊ฒ ๋ณด์ผ์ง ์กฐ๊ฑด๋ฌธ ๋ฑ์ผ๋ก ์์ฑ 1๋ฒ์ ํ์ผ๋ 2๋ฒ๋ถํฐ ํ ๊ฑฐ์ step 2. UI์ ํ์ฌ์ํ๋ฅผ state๋ก ์ ์ฅ state ํ๋ ๋ง๋ค๊ณ , ๊ฑฐ๊ธฐ์ ํ์ฌ UI์ ์ํ์ ๋ณด๋ฅผ ์ ์ฅํด๋๋ผ๋ ์๋ฆฌ let [modal, setModal] = useState(false); useState ์์ ๋ฌด์จ ์๋ฃ๋ฅผ ๋ฃ์ด์ผ ๋๋๋ฉด ์ ๋ง ๋ง์๋๋ก ํ๋ฉด๋จ ๋ชจ๋ฌ์ฐฝ์ ์ด๋ฆผ or ๋ซํ ์ด ๋๊ฐ ์ํ๋ฐ์ ์๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฑฐ 2์ข
๋ฅ๋ง ํํํ ์ ์๋ ์๋ฃํ์ด๋ฉด..