useEffect ๐useEffect์ ํน์ง๋ฆฌ์กํธ ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง ๋ ์ดํ๋ง๋ค ํน์ ์์ ์ ์ํํ๋๋ก ํ๋ hook (์ปดํฌ๋ํธ๊ฐ ๋ํ๋ ๋, ์ฌ๋ผ์ง ๋)useEffect ์์ฑ ํ, Import ํ์state๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ๋ฆฌ-๋ ๋๋ง์ด ์ผ์ด๋์ useEffect๊ฐ ๊ณ์ ์คํ๋จ=> ์์กด์ฑ ๋ฐฐ์ด๋ก ๋ง์ ์ ์์๐์์กด์ฑ ๋ฐฐ์ด ์ด ๋ฐฐ์ด์ ๊ฐ์ ๋ฃ์ผ๋ฉด ๊ทธ ๊ฐ์ด ๋ฐ๋ ๋๋ง useEffect๋ฅผ ์คํ์ํดTrigger : useEffect์ ๋์์ ์ด๋์ด๋ด๋ ์ด๋ ํ ๋ณ์ (๋ฐฐ์ด์ ๋ค์ด๊ฐ๋ ๊ฐ)์์กด์ฑ ๋ฐฐ์ด์ด ๋น ๋ฐฐ์ด์ผ ๊ฒฝ์ฐ : ์ต์ด ๋ ๋๋ง ์ดํ ๋ฑ ํ ๋ฒ๋ง ์คํ, ๊ทธ ์ดํ์๋ ์ด๋ค ์ผ์ด ์ผ์ด๋๋ ์คํ X ๐clean upuseEffect์ return ๋ฌธ์ ๋ค์ด๊ฐ๋ ํจ์๋ฆฌ์์ค ์ ๋ฆฌ, ๋ถํ์ํ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๋ฐฉ์งํ๊ธฐ..
useState setState์ ๊ฐ์ ์ง์ ๋ฃ์ด๋ ๋์ง๋ง ํจ์๋ฅผ ๋ฃ์ด ํจ์ํ ์ ๋ฐ์ดํธ๋ฅผ ๊ตฌํํ ์ ์๋ค.// ๊ธฐ์กด์ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ๋ฐฉ์setState(number + 1);// ํจ์ํ ์ ๋ฐ์ดํธ setState(() => {}); ์ฐจ์ด์ (๊ธฐ์กด)๊ฐ : ์ฌ๋ฌ ๋ช ๋ น์ ๋ชจ์์ ํ ๋ฒ์ ์คํ(+1์ 100๋ฒ ํด๋ +1๋ง ๋จ)ํจ์ํ : ์ฌ๋ฌ ๋ช ๋ น์ ๋ชจ์์ ์์ฐจ์ ์ผ๋ก ์คํ(+1์ 100๋ฒ ํ๋ฉด +100์ด ๋จ)๋ถ๋ชจ-์์ ์ปดํฌ๋ํธ์์ state๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด?count์ setCount๋ฅผ ๋๊ฒจ์ฃผ๋ ๋ฐฉ๋ฒsetCount๋ง ๋๊ฒจ์ฃผ๋ ๋ฐฉ๋ฒ 1. ๋ถํ์ํ props์ ๋ฌsetCount(count + 1); 2. ํจ์ํ์ ์ฌ์ฉํ๊ธฐsetCount(prev => prev + 1);
CSS in JS ๐๋ฆฌ์กํธ์์ css ์ ์ฉ๋ฒ์ธ๋ผ์ธ ์คํ์ผcss ํ์ผ ์์ฑ ํ className์ผ๋ก ์ ์ฉCSS in JS ๐CSS in JS ๋?์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ก CSS ์ฝ๋๋ฅผ ์์ฑํ์ฌ ์ปดํฌ๋ํธ๋ฅผ ๊พธ๋ฏธ๋ ๋ฐฉ์style์ ์ ์ฉํ ๋ ์กฐ๊ฑด๋ฌธ, ๋ณ์ ๋ฑ ๋ค์ํ ๋ก์ง์ ์ด์ฉํ ์ ์๋ค. styled-components๐styled-components ๋?๋ฆฌ์กํธ์์ CSS-in-JS ๋ฐฉ์์ผ๋ก ์ปดํฌ๋ํธ๋ฅผ ๊พธ๋ฐ์ ์๊ฒ ๋์์ฃผ๋ ํจํค์ง ๐styled-components ์ค์น ๋ฐ ์ฌ์ฉVSCode ๋ด ํ์ฅํ๋ก๊ทธ๋จ ์ค์นyarn์ผ๋ก styled-components ์ค์นํ๊ธฐ (ํฐ๋ฏธ๋)yarn add styled-components ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ ๋ฐฉ๋ฒ๊พธ๋ฏธ๊ณ ์ ํ๋ ์ปดํฌ๋ํธ๋ฅผ SC์ ๋ฐฉ์๋๋ก ๋จผ์ ๋ง๋ค๊ณ , ๊ทธ ์์ ์คํ์ผ ..
๋ฌธ์ ์ด๋ฆ ๋์ด ์ด๋ฉ์ผ ํ์ธ ๋น ๊ณณ์ ์ฑ์ฐ๋ฉด ๋๋ค.1, 2, 4๋ ์์ฑํ์ง๋ง 3๋ฒ์์ ๋งํ๋ค! ๋ฌธ์ ํ์ด1. ์ด๋ฆ, ๋์ด, ์ด๋ฉ์ผ ์ค ํ๋๋ผ๋ ์ ๋ ฅ๋์ง ์์ ๊ฒฝ์ฐ: alert "๋ชจ๋ ์ ๋ณด๋ฅผ ์ ๋ ฅํด์ฃผ์ธ์."submitBtn.addEventListener("click", function () { if(nameInput.value === "" || ageInput === "" || emailInput === ""){ alert("๋ชจ๋ ์ ๋ณด๋ฅผ ์ ๋ ฅํด์ฃผ์ธ์."); } ์ ๋ ฅํ ๊ฐ์ ๋ณ์๋ช .value๋ฅผ ํตํด ์ ๊ฐ์ ธ์ฌ ์ ์๋ค.๊ฐ์ด ๊ณต๋ฐฑ์ธ ๊ฒฝ์ฐ๋ ""๋ก ๋ํ๋ผ ์ ์๋ค.ํ๋๋ผ๋ ์ ๋ ฅ๋์ง ์์ ๊ฒฝ์ฐ๋ or(||)๋ก ํํํ ์ ์๋ค.(true || false || false ..
๋ฐ์ดํฐ ํ์ ๊ณผ ์ฐ์ฐ์์ ๋ํ ๊ต์ก ํ ์ค์ต ๋ฌธ์ 8๊ฐ๋ฅผ ํ์๋ค. ๋ฌธ์ ๊ฐ์ 1 ์ฆ๊ฐ ์์ง ์์ฑ๋์ง ์์ ๋ถ๋ถ์ ์ถ๊ฐํ๋ฉด ๋๋ค. ๋ฌธ์ ํ์ด1. const๋ก button๊ณผ span ํ๊ทธ๋ฅผ ์ง์ ํด์ค๋ค.- class์ด๊ธฐ ๋๋ฌธ์(".")์ ์ด์ฉํ๋ค.const plusBtn = document.querySelector(".plus-btn");const minusBtn = document.querySelector(".minus-btn");const number = document.querySelector(".number"); 2. ์ฆ๊ฐ ๋ก์ง์ ๊ตฌํํ๋ค.- addEventListener ๋ฅผ ํตํด ๋ฒํผ์ "ํด๋ฆญ"ํ์ ๋ ํจ์๋ฅผ ๊ตฌํํ๊ฒ ํ๋ค.plusBtn.addEventListener("click", func..
๋ฆฌ์กํธ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค๊ฐ ๋ค์ ์๊ฐuseState์ ์ ํํ ๊ธฐ๋ฅ์ ๋ฌด์์ด๋ฉฐ, ์ ์ฐ๋ ๊ฑธ๊น?๋ฆฌ์กํธ์์ useState์ ์ญํ ๐useState๋?'state'๋ผ๋ ๊ฒ์ ๋ง๋ค์ด ์ฃผ๋ ํจ์์ด๋ค. ๐state๋?๋ณ๊ฒฝ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ณ์์ด๋ค.state์ ํ ๋น๋ ๊ฐ์ด ๋ณํ๋ฉด ๊ทธ์ ๊ด๋ จ๋ ์ปดํฌ๋ํธ(ํ๋ฉด์ ๊ตฌ์ฑํ๋ ๋ธ๋ญ)๋ค์ด ์ฌ๋ ๋๋ง ๋๋ค. ์ผ๋ฐ ๋ณ์๋ ๊ฐ์ ๋ฐ๊พธ์ด๋ ํ๋ฉด์ ์ฌ๋ ๋๋ง ํ๋ ๊ธฐ๋ฅ์ ์๋ค.state๋ ๋ฆฌ์กํธ์์ ๋จ์ํ ๋ณ์๊ฐ ์๋ ๋ณํํ๋ ๊ฐ์ ๋ฐ๋ผ ํ๋ฉด์ ๋ฐ์๋๋๋ก ์ฐ๊ฒฐ๋์ด์๋ค. ์ฆ, state๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋๋ฆฌ์กํธ์์ state๊ฐ ํ๋ฉด์ ์ฌ๋ ๋๋ง ํ๋ ์ญํ ์ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ๐useState ํํ ๋ถ์const [ name, setName ] = useState(์ด๊ธฐ๊ฐ); ์์ ํ์..
Props ๐props๋?์ปดํฌ๋ํธ ๊ฐ์ ์ ๋ณด ๊ตํ ๋ฐฉ์๋ถ๋ชจ → ์์์๊ฒ ๋ฐ์ดํฐ(๊ฐ์ฒด ํํ)๋ฅผ ์ ๋ฌํ๋ ๊ตฌ์กฐ.๐ํน์ง๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ: ๋ฐ๋์ ๋ถ๋ชจ → ์์ ๋ฐฉํฅ์ผ๋ก๋ง ์ ๋ฌ๋๋ค.์ฝ๊ธฐ ์ ์ฉ: props๋ ์์ ํ์ง ์๊ณ ์ ๋ฌ๋ฐ์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ค. ๐์ฌ์ฉ ํํ์ ๋ฌํ๊ธฐ (๋ถ๋ชจ ์ปดํฌ๋ํธ):return ; // props๋ก 'name'์ ์ ๋ฌ๋ฐ๊ธฐ (์์ ์ปดํฌ๋ํธ):function Child(props) { console.log(props); // ์ ๋ฌ๋ฐ์ props ์ถ๋ ฅ return ์ฐ๊ฒฐ ์ฑ๊ณต;} State ๐state๋?์ปดํฌ๋ํธ ๋ด๋ถ์์ ๋ฐ๋ ์ ์๋ ๊ฐ.UI ๋ฐ์์ ์ํด ๊ฐ์ด ๋ณํด์ผ ํ ๋ ์ฌ์ฉ.'hook' ์ด๋ผ๊ณ ๋ ํ๋ค.๐State ์์ฑ ๋ฐฉ๋ฒuseState()๋ฅผ ์ฌ์ฉํ์ฌ state๋ฅผ ์ ์ธ..
useState์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ด์ฉํ ์นด์ดํฐ ์ฑ ๋ง๋ค์ด๋ณด๊ธฐ ์ค์ต ๊ตฌํํด์ผ ํ ๊ธฐ๋ฅ App.jsx์ ์ฝ๋๋ฅผ ์์ฑํ๋ค.+ 1 ๋ฒํผ์ ๋๋ฅผ ๋๋ง๋ค ์ซ์๊ฐ +1 ์ฆ๊ฐํ๋ค.- 1 ๋ฒํผ์ ๋๋ฅผ ๋๋ง๋ค ์ซ์๊ฐ - 1 ๊ฐ์ํ๋ค. ๐ก๋ฒํผ์ ๋๋ฅด๋ฉด State๊ฐ ๋ณ๊ฒฝ๋๋ฉด์ ํ๋ฉด์ด ๋ฆฌ๋ ๋๋ง ๋๋ ํ์ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ ๐๊ธฐ๋ณธ ํ์App.jsx์ ๊ธฐ๋ณธ ํ์์ ์ค๋นํ๋ค.* rafce ์ ๋ ฅ๋๋ณด๊ธฐ๋ ๊ฐ์ ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ค์นํ์ฌ ๋จ์ถํค๋ฅผ ์ฌ์ฉํ ์ ์๋ค.import React from "react";const App = () => {return App}export default App; ๐๊ตฌํ ๋จ๊ณ 1. ์ด๊ธฐ๊ฐ์ด 0์ธ number๋ผ๋ State ๋ง๋ค๊ธฐ* useState๋ฅผ import ํ๊ธฐimport React, { us..
1. ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋?๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ ํจ์๋ค.์ปดํฌ๋ํธ๋ ํ๋ฉด์ ์ด๋ป๊ฒ ํํ๋ ์ง๋ฅผ ์ ์ํ๋ฉฐ, React ์๋ฆฌ๋จผํธ๋ฅผ ๋ฐํํ๋ค.1-1. ํจ์ํ ์ปดํฌ๋ํธ ์์// props๋ผ๋ ์ ๋ ฅ์ ๋ฐ์ React ์๋ฆฌ๋จผํธ๋ฅผ ๋ฐํfunction Welcome(props) { return Hello, {props.name};}// ๊ฐ๋จํ ์์function App() { return hello;} 2. ๋ฆฌ์กํธ ์ค์ต ๋ด์ฉ2-1. ์ปดํฌ๋ํธ ๋ง๋ค๊ธฐ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค ๋ ๋ฐ๋์ ๊ฐ์ฅ ์ฒซ ๊ธ์๋ ๋๋ฌธ์๋ก ๋ง๋ค์ด์ผ ํ๋ค.ํด๋๋ ์๋ฌธ์๋ก ์์ํ๋ ์นด๋ฉ์ผ์ด์ค๋ก ์์ฑํ๊ณ , ์ปดํฌ๋ํธ๋ฅผ ๋ง๋๋ ํ์ผ์ ๋๋ฌธ์๋ก ์์ํ๋ ์นด๋ฉ์ผ์ด์ค๋ก ์ด๋ฆ์ ์ง๋๋ค.์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ HTML ์์์ ์ฌ์ฉํ ๋ {} ์ค๊ดํธ๋ฅผ ์ฌ์ฉํ๋ค.=> ๋ฆฌํด๋ฌธ ์ดํ์ ์๋ฐ์คํฌ๋ฆฝํธ..
๋ ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์กฐ๊ฑด๋ฌธ์ ์ฒ๋ฆฌํ ๋์ ์ฒด ํํ์์ ํ๊ฐํ์ง ์๊ณ ์ต์ํ์ ํ๊ฐ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ๋ ๋ฐฉ์์ ๋งํ๋ค. ๋จ์ถ ํ๊ฐ๋ ์ฃผ๋ก && (๋ ผ๋ฆฌ๊ณฑ), || (๋ ผ๋ฆฌํฉ), ?? (null ๋ณํฉ ์ฐ์ฐ์)๋ฅผ ์ฌ์ฉํ ๋ ๋ฐ์ํ๋ค. ๋ ผ๋ฆฌํฉ( || ) ์ฐ์ฐ์๋ ผ๋ฆฌํฉ ์ฐ์ฐ์ ||๋ ์ข๋ณ์ ํผ์ฐ์ฐ์๊ฐ falsy ๊ฐ(false, 0, "", null, undefined, NaN)์ผ ๋๋ง ์ฐ๋ณ์ ํผ์ฐ์ฐ์๋ฅผ ํ๊ฐํ๋ค.์ข๋ณ์ ํผ์ฐ์ฐ์๊ฐ truthy ๊ฐ์ผ ๊ฒฝ์ฐ, ๊ทธ ๊ฐ์ด ๋ฐ๋ก ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ๋ฐํ๋๋ฉฐ, ์ฐ๋ณ์ ํ๊ฐ๋์ง ์๋๋ค. ์ฝ๊ฒ ์ค๋ช ํ์๋ฉด A || BA๊ฐ false๋ผ๋ฉด B๋ฅผ ๋ฐํํ๊ณ ,A๊ฐ true๋ผ๋ฉด B๋ ๋ฌด์, A์ ๋ง๋ ๊ฐ์ ๋ฐํํ๋ค. +) falsyํ ๊ฐ : false, 0, "", null, undefined ๐์์/..