keyDown/keyUp ์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ ๋, ์์ด๋ ๊ด์ฐฎ์ง๋ง ํ๊ตญ์ด๋ก ์
๋ ฅํ๋ฉด ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๐ค Why? ์ด ๋ฌธ์ ๋ ํ๊ธ์ ์กฐํฉํ ์
๋ ฅ ๋ฐฉ์ ๋๋ฌธ์ด๋ผ๊ณ ํ๋ค. ํ๊ธ ์
๋ ฅ์ ์ฌ๋ฌ ํค ์
๋ ฅ์ด ์กฐํฉ๋์ด ํ๋์ ๊ธ์๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ ๊ฑฐ์น๊ธฐ ๋๋ฌธ์, key Event๊ฐ ๋ฐ์ํ๋ ์์ ์๋ ์
๋ ฅ์ด ์์ ํ ์์ฑ๋์ง ์์ ์ ์๋ค๊ณ ํ๋ค. e.nativeEvent.isComposing ์ด ์์ฑ์ ์ฌ์ฉ์๊ฐ ํ
์คํธ ์
๋ ฅ ์ค์ ๋ฌธ์ ์กฐํฉ(์: ํ๊ธ ์์๊ณผ ๋ชจ์ ์กฐํฉ)์ด ์งํ ์ค์ธ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋
๋๋ค. ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ํค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ์
๋ ฅ์ด ์์ฑ๋ ์ํ์ธ์ง๋ฅผ ํ์ธํ์ฌ, ์
๋ ฅ์ ์์ฑ์ด ๋ ๊ฒฝ์ฐ์๋ง ๊ฒ์์ฒ๋ฆฌ๋ฅผ ์คํํ๋๋ก ํ๋ค. const handleKeyDown: Keyboar..
๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ
์์ ์ ์ฝ๋ฉ์๋ ค์ฃผ๋๋๋์ ์ฑํ
์ฑ ๋ง๋ค๊ธฐ ์์์ ๋ณด๊ณ ์ด๋ฒ ํ๋ก์ ํธ์ ์ ์ฉํด๋ณด๊ณ ์ถ๋จ ์๊ฐ์,2์ฃผ ๋ฐฐ์ด ๋ชจ์๋ ๋ฐฑ์๋ ์ค๋ ฅ์ด์ง๋ง... ์จ์ ํ ๊ธฐ๋ฅ์ ๋คํ์ง ๋ชปํด๋ ๊ฐ๋จํ ์ฑํ
์ฑ ๋ง๋ค๊ธฐ์ ๋์ ์ ํด๋ณด์๋ค! [BackEnd]HTTP๋จ๋ฐฉํฅ(ํด๋ผ์ด์ธํธ ์์ฒญ์๋ง)์ฐ๊ฒฐ ์ง์์ฑ โ ์น์์ผ์๋ฐฉํฅ(๊ฐ์๋ํ๋ฅผ ์ํ ๋ ์์ฒญ ๊ฐ๋ฅ)์ฐ๊ฒฐ ์ง์์ฑโญ๏ธ ๐๐ป ์น์์ผ์ผ๋ก ์ง์์ ์ธ ์ค์๊ฐ ์๋ฐฉํฅ ํต์ ์ ํ ์ ์๊ณ , ์๋ฒ๊ฐ ์๋ก์ด ๋ฉ์์ง๊ฐ ์์๋ ํด๋ผ์ด์ธํธ์๊ฒ ์ฆ์ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ์์๋ค. https://github.com/Yuiii0/chat-server GitHub - Yuiii0/chat-serverContribute to Yuiii0/chat-server development by creating an account on Git..
์ข์์ํ ์ํ๋ค์ ํ๋ก ํธ๋จ์์ ๊ด๋ฆฌํ๊ธฐ ์ํด, zustand ์คํ ์ด์ productId๋ฅผ ๋ฐฐ์ด๋ก ๊ด๋ฆฌํ๊ณ ์๋ค. ๋ง์ดํ์ด์ง์์, ์ข์์ํ ์ํ productList๋ค์ ์ํด์, zustand์์ ๊ด๋ฆฌํ๊ณ ์๋ productId๋ค์ ๋ฐฐ์ด์ ์ํํ๋ฉด์, ํด๋น productId๋ก getProduct ์ฟผ๋ฆฌ๋ฌธ์ ์ํํด์ผํ๋ค. useQueries์ฌ๋ฌ๊ฐ์ ๋น๋๊ธฐ ์ฟผ๋ฆฌ๋ฅผ ๋์์ ์คํํ ์ ์๊ฒ ํด์ฃผ๋ ํ
์ผ๋ก, ๊ฐ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ๋ฐฐ์ด ํํ๋ก ๋ฐ์ ๊ฐ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์ด๋ก ๋ฐํํ๋ค. ๋ํ ๊ฐ ์ฟผ๋ฆฌ์ ๋ก๋ฉ ์ํ๋ ์๋ฌ์ํ ๋ฑ์ ๊ฐ๋ณ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค. ๋์ ๋ณ๋ ฌ ์ฟผ๋ฆฌ ์์
์ ์ํด ์ฌ์ฉํ๊ธฐ์, ์ฃผ๋ก ์ฌ๋ฌ ๊ฐ์ ๋น๋๊ธฐ ์ฟผ๋ฆฌ๋ฅผ ๋์์ ์คํํด์ผ ํ ๋ ์ ํฉํ๋ค. const results = useQueries(..
๋ธ๋๋ ์นดํ
๊ณ ๋ฆฌ๋ณ๋ก ๋ธ๋๋๋ณ ์ํ์ ๋ธ๋๋ํ์ด์ง์์ ๋ณด์ฌ์ฃผ๋ ค๊ณ ํ๋๋ฐ, brandId์ ๋ฐ๋ผ ์กฐ๊ฑด๋ถ ์ฟผ๋ฆฌ๋ฅผ ํตํด fetch๊ฐ ๋ฌ๋ผ์ง๋ค. brandIdโญ๏ธ : ๋ธ๋๋๋ณ ์ํ fetch (useQueryGetBrand)โ : ์ ์ฒด์ํ fetch (useQueryGetProducts) ์กฐ๊ฑด๋ฌธ๊ณผ useEffectโ๏ธReact ํ
์ ์ปดํฌ๋ํธ์ ์ต์์ ์์ค์์๋ง ํธ์ถ๋์ด์ผ ํ๋ฉฐ, ์กฐ๊ฑด๋ฌธ์ด๋ ๋ฐ๋ณต๋ฌธ ๋ด๋ถ์์ ํธ์ถํ ์๊ฐ ์๋ค. ํ
์ ๋์์ด ์์ธกํ ์๊ฐ ์์ด์ง๊ธฐ ๋๋ฌธ์ด๋ค. React๋ ์ปดํฌ๋ํธ์ ์ํ ๋ณํ๋ props์ ๋ฐ๋ผ ๋ฆฌ๋ ๋๋ง ๋๊ธฐ๋๋ฌธ์, ์กฐ๊ฑด๋ฌธ์ด๋ ๋ฐ๋ณต๋ฌธ ๋ด๋ถ์์ ํธ์ถํ๊ฒ๋๋ฉด, ํด๋น ์กฐ๊ฑด์ด๋ ๋ฐ๋ณต์ ์ํด ๋ฆฌ๋ ๋๋ง์ผ๋ก ์ฟผ๋ฆฌ ์ธ์คํด์ค๊ฐ ์์ฑ๋๊ณ ์ด์ ์ฟผ๋ฆฌ๊ฐ ์๋ก์ด ์ฟผ๋ฆฌ๋ก ๋์ฒด๋ ์ ์๊ณ , ์๊ธฐ์น..
์ ์ ๊ฐ ์ข์์ํ ์ํ์ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ผ๋ก ํฌ๊ฒ ๋๊ฐ์ง ๋ฐฉ์์ด ์๋ค. 1. ์๋ฒ API๋ก ๊ด๋ฆฌํ๊ธฐ์๋ฒ์ธก์์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ๋๋ฌธ์, ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ, ๋ณด์, ๋ฐ์ดํฐ๊ฐ ๋ง์๋ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌ ํ ์์๋ค. 2. ํ๋ก ํธ์๋ ์ ์ญ ์ํ๋ก ๊ด๋ฆฌํ๊ธฐ์๋ฒ์ ๋คํธ์ํฌ ์์ฒญ์์ด ์งํํ๊ธฐ ๋๋ฌธ์ UI๊ฐ ๋น ๋ฅด๊ฒ ๋ฐ์ํ ์ ์์ง๋ง, ์ผ๊ด์ฑ, ์บ์๋ฅผ ์ง์ฐ๊ฑฐ๋ ๋ค๋ฅธ ๊ธฐ๊ธฐ๋ฅผ ์ฌ์ฉํ ๋ ์ข์์ ์ํ ์ ๋ณด๋ฅผ ์์ด๋ฒ๋ฆด์ ์๋ ๋ฌธ์ ์ ์ด ๋ฐ์ํ ์์๋ ๋จ์ ์ด ์กด์ฌํ๋ค. โจ ์ผ๋ฐ์ ์ผ๋ก ์์
์ ์ธ ์น์ฑ์์ ์๋ฒ API๋ฅผ ํตํ ๊ด๋ฆฌ ๋ฐฉ์์ ์ ํธํ๋ค! ์ฌ์ฉ์๊ฐ ์ข์์ ๋ฒํผ์ ํ ๊ธํ์ฌ , ์ข์์ ๋๋ฅธ ์ํ๋ค์ productId๋ฅผ zustand๋ก ์ ์ญ๊ด๋ฆฌํ์ฌ,๋ง์ดํ์ด์ง์์ ์ข์์ํ ์ํ๋ค์ productId์ ๊ฐ์ง๊ณ apiํธ์ถ์ ํตํด ๊ฐ์ ธ์์ ๋์ฐ๋ ..
[Lv2] ํ๊ฒ๋๋ฒ function solution(numbers, target) { var answer = 0; function dfs(idx,sum){ if(idx 0) { let [x, y, distance] = queue.shift(); // ํ์ฌ ์์น ๋ฐ ์ด๋ ๊ฑฐ๋ฆฌ // ๋ชฉํ ์ง์ ์ ๋๋ฌํ ๊ฒฝ์ฐ if (x === n - 1 && y === m - 1) { return distance; // ํ์ฌ๊น์ง์ ์ด๋ ๊ฑฐ๋ฆฌ๋ฅผ ๋ฐํ } // ์ํ์ข์ฐ๋ก ์ด๋ ์๋ for (const [dx, dy] of dir) { let newX = x + dx; let newY = y + dy; // ์ด๋ ๊ฐ๋ฅํ ์์น์ด๊ณ , ๋ฐฉ๋ฌธํ์ง ์์ ๊ฒฝ์ฐ if (newX >= 0 && newX = 0 && new..
[Lv1] ๊ฐ์ ์ซ์๋ ์ซ์ด function solution(arr) { const answer = [arr[0]]; //์ฒซ๋ฒ์งธ ์์๋ ํญ์ ํฌํจ for(let i=1;iarr[i]!==arr[i+1]) } ์ ํ์ฑ: 71.9, ํจ์จ์ฑ: 28.1 [Lv2] ๊ธฐ๋ฅ๊ฐ๋ฐ function solution(progresses, speeds) { var answer = []; const work=[] //1. ์์
์ผ ๋ฐฐ์ด ์์ฑ for(let i=0;i< progresses.length;i++){ let left=100-progresses[i]; left=Math.ceil(left/speeds[i]) work.push(left) } //2. ์ํ let deploy=work[0]; let count=0; for(let..
Express.js CR GET //file Data GET app.get("/posts", async (req, res) => { res.json(posts); //JSONํ์์ผ๋ก ์๋ต๋ณด๋ด๊ธฐ }); app.get("/posts/:postId", (req, res) => { const postId = req.params.postId; const post = posts.find((post) => post.id === Number(postId)); res.json(post); }); //axios๋ก GET app.get("/todos", async (req, res) => { const response = await axios.get( "https://jsonplaceholder.typicode.com/to..