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

โœ๏ธ/React

(13)
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 : ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํŒŒ..