๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

โœ๏ธ

(36)
React ๊ณต๋ถ€ํ•˜๊ธฐ(2) - styled-components ๐ŸŽ‰ ๋ฒจ๋กœํผํŠธ์™€ ํ•จ๊ป˜ํ•˜๋Š” ๋ชจ๋˜ ๋ฆฌ์•กํŠธ CSS in JS $ yarn add styled-components import styled from 'styled-components' [polished์˜ ์Šคํƒ€์ผ ๊ด€๋ จ ์œ ํ‹ธ ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ] lighten() darken() $ yarn add polished import { darken, lighten } from 'polished'; import React from 'react'; import styled from 'styled-components'; import { darken, lighten } from 'polished'; const StyledButton = styled.button` /* ๊ณตํ†ต ์Šคํƒ€์ผ */ display: inline-flex; outli..
React ๊ณต๋ถ€ํ•˜๊ธฐ(1) - Hooks ์ข…๋ฅ˜ํŽธ ๐ŸŒน ๋ฒจ๋กœํผํŠธ์™€ ํ•จ๊ป˜ํ•˜๋Š” ๋ชจ๋˜ ๋ฆฌ์•กํŠธ ~ for ์„ฑ๋Šฅ ์ตœ์ ํ™” ~ useMemo : ์—ฐ์‚ฐํ•œ ๊ฐ’ ์žฌ์‚ฌ์šฉ useCallback : ํ•จ์ˆ˜ ์žฌ์‚ฌ์šฉ React.memo : ์ปดํฌ๋„ŒํŠธ ๋ฆฌ๋ Œ๋”๋ง ๋ฐฉ์ง€ 7. useState๋ฅผ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐ”๋€Œ๋Š” ๊ฐ’ ๊ด€๋ฆฌํ•˜๊ธฐ import React, { useState } from 'react'; const [number, setNumber] = useState(0); ์ƒํƒœ์˜ ๊ธฐ๋ณธ๊ฐ’์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„ฃ์–ด์„œ ํ˜ธ์ถœ ํ˜ธ์ถœํ•˜๋ฉด ๋ฐฐ์—ด์ด ๋ฐ˜ํ™˜, ์ฒซ๋ฒˆ์งธ ์›์†Œ๋Š” ํ˜„์žฌ ์ƒํƒœ, ๋‘๋ฒˆ์งธ ์›์†Œ๋Š” Setter ํ•จ์ˆ˜ 11. useRef๋กœ ํŠน์ • DOM ์„ ํƒํ•˜๊ธฐ import React, { useRef } from 'react'; const nameInput = useRef(); ... nameInput.current..
React ๊ณต๋ถ€ํ•˜๊ธฐ(1) - ์ƒํƒœ๊ด€๋ฆฌ ไธญ ๋ฐฐ์—ดํŽธ ๐Ÿ”ฅ ๋ฒจ๋กœํผํŠธ์™€ ํ•จ๊ป˜ํ•˜๋Š” ๋ชจ๋˜ ๋ฆฌ์•กํŠธ ๋ถˆ๋ณ€์„ฑ !!!! push, splice XXX concat, filter, map OOO 11. ๋ฐฐ์—ด ๋ Œ๋”๋งํ•˜๊ธฐ map() : ๋ฐฐ์—ด์•ˆ์— ์žˆ๋Š” ๊ฐ ์›์†Œ๋ฅผ ๋ณ€ํ™˜ํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ์คŒ ๊ฐ ์›์†Œ๋“ค๋งˆ๋‹ค ๊ณ ์œ ํ•œ key ๊ฐ’์„ ์„ค์ •ํ•ด์ค˜์•ผ ๋จ => ๊ทธ๋ž˜์•ผ์ง€, ์ˆ˜์ •๋˜์ง€ ์•Š๋Š” ๊ธฐ์กด๊ฐ’์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ์›ํ•˜๋Š” ๊ณณ์— ๋‚ด์šฉ์„ ์‚ฝ์ž…ํ•˜๊ณ  ์‚ญ์ œํ•จ import React from 'react'; function User({ user }) { return ( {user.username} ({user.email}) ); } function UserList() { const users = [ { id: 1, username: 'velopert', email: 'public.velopert@gmail.c..
React ๊ณต๋ถ€ํ•˜๊ธฐ(1) - ์ƒํƒœ๊ด€๋ฆฌํŽธ ๐Ÿ‡ ๋ฒจ๋กœํผํŠธ์™€ ํ•จ๊ป˜ํ•˜๋Š” ๋ชจ๋˜ ๋ฆฌ์•กํŠธ ์•„๋ž˜์— ๊ธฐ๋Šฅ๋“ค์€ ๋ชจ๋‘ React Hooks์ค‘ ํ•˜๋‚˜ on์ด๋ฒคํŠธ์ด๋ฆ„={์‹คํ–‰ํ•˜๊ณ ์‹ถ์€ํ•จ์ˆ˜} 7. useState๋ฅผ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐ”๋€Œ๋Š” ๊ฐ’ ๊ด€๋ฆฌํ•˜๊ธฐ import React, { useState } from 'react'; function Counter() { const [number, setNumber] = useState(0); const onIncrease = () => { setNumber(number + 1); } const onDecrease = () => { setNumber(number - 1); } return ( {number} +1 -1 ); } export default Counter; (์ž์„ธํžˆ ๋ณด๊ธฐ) ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, ๋ Œ๋”๋ง๋˜๋Š” ์‹œ์ ์—์„œ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฒ„๋ฆผ..
React ๊ณต๋ถ€ํ•˜๊ธฐ(1) - ๊ธฐ๋ณธํŽธ ๐ŸŒˆ ๋ฒจ๋กœํผํŠธ์™€ ํ•จ๊ป˜ํ•˜๋Š” ๋ชจ๋˜ ๋ฆฌ์•กํŠธ 01. ๋ฆฌ์•กํŠธ๋Š” ์–ด์ฉŒ๋‹ค ๋งŒ๋“ค์–ด์กŒ์„๊นŒ? Javascript๋Š” ์–ด๋–ค ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ๋ฉด, ๊ทธ ์ƒํƒœ์™€ ์—ฐ๊ฒฐ๋œ(getElementById) DOM์„ ๋ณ€๊ฒฝ! React๋Š” ์–ด๋–ค ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ๋ฉด, ์•„์˜ˆ ์ „๋ถ€ ๋‹ค ๋‚ ๋ ค๋ฒ„๋ฆฌ๊ณ  ์ƒˆ๋กœ์šด DOM์„ ๋ณด์—ฌ์คŒ! => ์–ด๋–ป๊ฒŒ ์—…๋ฐ์ดํŠธ ํ•ด์•ผ๋˜์ง€.. ๊ณ ๋ฏผํ•  ํ•„์š” ์—†์–ด์ง ๊ฐœ๋ฐœ์ด ์‰ฌ์–ด์กŒ๋‹ค => ๊ทผ๋ฐ ๋Š๋ฆฌ์ง€ ์•Š์•„? => virtual DOM์„ ์‚ฌ์šฉํ•ด์„œ ๋ณ€๊ฒฝ์ด ๋œ ๋ถ€๋ถ„๊ณผ ์•ˆ ๋œ ๋ถ€๋ถ„์„ ๋น„๊ตํ•ด์„œ ๋ณ€๊ฒฝ๋œ ๊ฒƒ๋งŒ ์‹ค์ œ DOM์— ์ ์šฉ => ๊ทธ๋ž˜์„œ ๊ฒฐ๋ก ์€ ๋น ๋ฅด๋‹ค! 02. ์ž‘์—…ํ™˜๊ฒฝ ์ค€๋น„ Node.js : for Webpack, Babel Yarn : npm(node.js package manager) ์ƒ์œ„๋ฒ„์ „ ์ฝ”๋“œ ์—๋””ํ„ฐ : VSC Git bash Webpack : ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํŒŒ..
[JavaScript] HTML์— JS ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ• ๋น„๊ต / async VS defer ์ฐจ์ด์  ๐Ÿ”ฝ HTML ํŒŒ์‹ฑ์— ๋Œ€ํ•ด์„œ๋Š” ์•„๋ž˜ ํฌ์ŠคํŠธ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š” ๐Ÿ”ฝ[HTTP] ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ณผ์ •๐Ÿ”— Browser Rendering(๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง)์ด๋ž€? ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ์„œ๋ฒ„์— ์ „๋‹ฌํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚ด๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•œ๋‹ค. ๐Ÿ”— Parsing(ํŒŒ์‹ฑ)์ด๋ž€? ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” devjindev.tistory.com 1. head ์•ˆ์— ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒฝ์šฐ โญโ˜†โ˜†โ˜† 123456789 ... ... cs JS๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋™์•ˆ HTML ํŒŒ์‹ฑ์„ ๋ฉˆ์ถ”๊ณ , JS ๋‹ค ๋ถˆ๋Ÿฌ์˜ค๋ฉด ๋‚˜๋จธ์ง€ ํŒŒ์‹ฑ์„ ์ง„ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž์—๊ฒŒ ํŽ˜์ด์ง€๊ฐ€ ๋ณด์—ฌ์ง€๋Š” ์‹œ๊ฐ„์ด ๋”œ๋ ˆ์ด๋œ๋‹ค. 2. body ์•ˆ(๋งจ ๋)์— ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒฝ์šฐ โญโญโ˜†โ˜† 123456789 ... ... cs ๋จผ์ € HTML์„ ๋ชจ๋‘ ํŒŒ์‹ฑํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ํŽ˜์ด์ง€๊ฐ€ ๋ณด์—ฌ์ง„ ํ›„,..
[JavaScript / ES6] ES6 ๋ฌธ๋ฒ• ์ •๋ฆฌ ๐Ÿ”— const, let ๐Ÿ“Œ var VS const, let var์€ ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„์ด๋‹ค. const, let์€ ๋ธ”๋ก ์Šค์ฝ”ํ”„์ด๋‹ค. ๋”ฐ๋ผ์„œ {๋ธ”๋ก} ๋ฐ–์—์„œ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. ๐Ÿ“Œ const VS let let์€ ๋ณ€์ˆ˜์— ์žฌํ• ๋‹น์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ๊ฐ’์„ ๋Œ€์ž…ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์ƒ๊ฒผ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. const๋Š” ๋ณ€์ˆ˜์— ํ•œ ๋ฒˆ ๋Œ€์ž…ํ•˜๋ฉด ๋‹ค๋ฅธ ๊ฐ’์„ ๋Œ€์ž…ํ•  ์ˆ˜ ์—†๋‹ค. ๋ณดํ†ต ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ๐Ÿ”— ํ…œํ”Œ๋ฆฟ ๋ฌธ์ž์—ด 1 2 3 4 5 6 7 const num1 = 1; const num2 = 2; const result = 3; const string1 = num1 + '+' + num2 + '=' + result; // ๊ธฐ์กด ๋ฐฉ์‹ const string2 = `${num1}+${num2}=${result}` // E..
[JavaScript] ์ž๋ฃŒํ˜• (Data Type) / ์ข…๋ฅ˜, ํ˜•๋ณ€ํ™˜, typeof ๐Ÿ”— ์ž๋ฃŒํ˜•(Data Type) ์ข…๋ฅ˜ ์ˆซ์žํ˜• (Number) : 10์ง„์ˆ˜, 16์ง„์ˆ˜, ์‹ค์ˆ˜ ๋ชจ๋‘ ํ•ด๋‹น ๋ฌธ์žํ˜• (String) ๋…ผ๋ฆฌํ˜• (Boolean) : true(์ฐธ) / false(๊ฑฐ์ง“) undefined : ๋ฏธ์ •์˜๋œ ์ž๋ฃŒํ˜• null : ์•„๋ฌด๊ฒƒ๋„ ์ฐธ์กฐํ•˜์ง€ ์•Š์€ ์ž๋ฃŒํ˜• ๐Ÿ“Œ undefined VS null ์ฐจ์ด์  ๊ณตํ†ต์  : "๊ฐ’์ด ์—†๋‹ค." undefined ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ดˆ๊ธฐํ™” ๋˜์ง€ ์•Š์€ ๊ธฐ๋ณธ ์ดˆ๊ธฐ๊ฐ’ ์ƒํƒœ ex) var data1; null ์˜ค๋ธŒ์ ํŠธ(๊ฐ์ฒด) ํƒ€์ž… ๊ฐ์ฒด๋ฅผ ๋‹ด๊ธฐ์œ„ํ•œ ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ์ƒํƒœ ex) var data = null; (๐Ÿคท‍โ™€๏ธ) undefined ๋ณด๋‹ค null ๋Œ€์ƒ ๋ณ€์ˆ˜๊ฐ€ ๋” ํฐ ๋ฒ”์œ„์ธ ๋Š๋‚Œ ๐Ÿ”— ์ž๋ฃŒํ˜• ํ™•์ธํ•˜๊ธฐ typeof(๋ณ€์ˆ˜); ๐Ÿ”— ์ž๋ฃŒํ˜• ํ˜•๋ณ€ํ™˜ ๋ฌธ์žํ˜• -> ์ˆซ์žํ˜• Number(๋ณ€์ˆ˜..