Hoonni
ํ›„๋‹ˆ's Blog

์ „์ฒด ๊ธ€

Hi There ! ๐Ÿ–๏ธ I am FrontEnd Developer ๐Ÿ’ป I'm studying AI, Backend, React-Native Now.
React/2022-ไธŠ

JSX

JSX JSX๋Š” JavaScript์— XML์„ ์ถ”๊ฐ€ํ•œ ํ™•์žฅ ๋ฌธ๋ฒ•์ด๋‹ค. ๋ฆฌ์•กํŠธ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ ์‚ฌ์šฉ๋จ -> ๊ณต์‹์ ์ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์ด ์•„๋‹˜ ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ HTML์„ ๋™์‹œ์— ์ž‘์„ฑํ•˜์—ฌ ํŽธ๋ฆฌํ•จ JSX ๋ฌธ๋ฒ• ๊ทœ์น™ โ‘  ๋ฐ˜๋“œ์‹œ ๋ถ€๋ชจ ์š”์†Œ ํ•˜๋‚˜๊ฐ€ ๊ฐ์‹ธ๋Š” ํ˜•ํƒœ โ”” ์ปดํฌ๋„ŒํŠธ์— ์—ฌ๋Ÿฌ ์š”์†Œ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ๋ถ€๋ชจ ์š”์†Œ ํ•˜๋‚˜๋กœ ๊ฐ์‹ธ์•ผ ํ•จ โ‘ด ๋ถ€๋ชจ ์š”์†Œ ํ•˜๋‚˜๋กœ ๊ฐ์‹ธ์ค˜์•ผํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ผ๊นŒ์š”? → Virtual DOM์—์„œ ์ปดํฌ๋„ŒํŠธ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•ด ๋‚ผ ๋•Œ ํšจ์œจ์ ์œผ๋กœ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋„๋ก ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€๋Š” ํ•˜๋‚˜์˜ DOM ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•œ๋‹ค๋Š” ๊ทœ์น™์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ. โ‘ต ๋ฌด์กฐ๊ฑด ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์‹ธ์•ผ ํ• ๊นŒ์š”? → ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. Fragment๋ผ๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Œ. Fragment๋Š” ํ˜น์€ ์˜ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ..

Web Basic/JavaScript

Array์˜ ํ•„์ˆ˜ ๋ฉ”์„œ๋“œ(02)

๋ฐฐ์—ด ์ „์ฒด ์ˆœํšŒ forEach() map(), for()๊ณผ ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์„ ํ•˜๋ฉฐ, ์ฃผ์–ด์ง„ ํ•จ์ˆ˜๋ฅผ ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ์‹คํ–‰์‹œํ‚ด map()๊ณผ ๋‹ค๋ฅด๊ฒŒ forEach()๋Š” ๋ฐฐ์—ด์„ ๋ฆฌํ„ดํ•˜์ง€ ์•Š์Œ undefined๋ฅผ ๋ฆฌํ„ด arr.forEach(() => { //๊ฐ ๋ฐฐ์—ด์˜ ์›์†Œ์— ๋ฐ˜๋ณตํ•˜๊ณ  ์‹ถ์€ ์ฝ”๋“œ }) ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋นˆ๋ฐฐ์—ด ์•ˆ์— push ํ•ด์„œ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•จ โ€ป ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์ด ํ•„์š”ํ•  ๋•Œ๋Š” map์„ ์‚ฌ์šฉ / ๋ฐฐ์—ด์€ ํ•„์š”์—†์ง€๋งŒ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” forEach ์‚ฌ์šฉ forEach๋Š” ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋Š” ๋„์ค‘์— ๋ฉˆ์ถœ ์ˆ˜ ์—†์ง€๋งŒ, ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋Š” ์†๋„๊ฐ€ ๋น ๋ฆ„ ๋ฐฐ์—ด ํƒ์ƒ‰(์›ํ•˜๋Š” ์š”์†Œ ์ฐพ๊ธฐ) indexOf() ๋ฐฐ์—ด์— ํŠน์ • ์›์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ํƒ์ƒ‰ํ•˜๊ณ  ์ฐพ์€ ์ฒซ๋ฒˆ์งธ ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด -1์„ ๋ฐ˜ํ™˜ arr.indexO..

Web Basic/JavaScript

Array์˜ ํ•„์ˆ˜ ๋ฉ”์„œ๋“œ (1)

๋ฐฐ์—ด์— ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๋Š” ๋ฉ”์„œ๋“œ push / pop ๋ฐฐ์—ด์˜ ๋งจ๋’ค์— ์ถ”๊ฐ€(push)ํ•˜๊ณ  ์ œ๊ฑฐ(pop)ํ•˜๋Š” ๋ฉ”์„œ๋“œ // push let fruits = ["ํฌ๋„, "๋ณต์ˆญ์•„", "๋”ธ๊ธฐ", "์ˆ˜๋ฐ•"] fruits.push("์ƒค์ธ ๋จธ์Šค์บฃ", "๊ทค") // ๊ฒฐ๊ณผ fruits = ["ํฌ๋„", "๋ณต์ˆญ์•„", "๋”ธ๊ธฐ", "์ˆ˜๋ฐ•", "์ƒค์ธ ๋จธ์Šค์บฃ", "๊ทค"] // pop let fruits = ["ํฌ๋„", "๋ณต์ˆญ์•„", "๋”ธ๊ธฐ", "์ˆ˜๋ฐ•"] let one = fruits.pop() // ๊ฒฐ๊ณผ one = "์ˆ˜๋ฐ•" fruits = ["ํฌ๋„", "๋ณต์ˆญ์•„", "๋”ธ๊ธฐ"] push๋Š” ํ•œ๋ฒˆ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์›์†Œ๋ฅผ ๋„ฃ์–ด์ค„ ์ˆ˜ ์žˆ์Œ pop์€ ๋นผ์˜ฌ ์ˆ˜ ์žˆ๋Š” ์›์†Œ๊ฐ€ ๊ณ ์ •์  (๋ฐฐ์—ด์˜ ๋งจ ๋’ค ์›์†Œ) push๋Š” ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€๋œ ์›์†Œ๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ ์ƒˆ๋กœ..

React/Errors

Uncaught Error: A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.

์ด๋Ÿฐ ์—๋Ÿฌ๋ฌธ๊ตฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ๋ฅผ ๋กœ ๋ฌถ์–ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„๋˜ํ•œ component → element๋กœ ๋ณ€๊ฒฝ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. # ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• (2022. 01. 16 ๊ธฐ์ค€) 1. ์•„๋ž˜์™€ ๊ฐ™์ด ์ตœ์‹ ๋ฒ„์ „์— ๋งž๊ฒŒ ์ž‘์„ฑํ•œ๋‹ค. 2. ์ด์ „ ๋ฒ„์ „์„ ์„ค์น˜ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. React Router | Overview Declarative routing for React apps at any scale reactrouter.com

React/Higher-Order

ํ•˜์ด์–ด์˜ค๋”(1) - ์ปค๋ง

์ปค๋ง ๋ฐ˜ํ™˜๊ฐ’์ด ํ•จ์ˆ˜์ธ ๋””์ž์ธ ํŒจํ„ด์„ ๋งํ•จ ์ค‘๋ณต๋œ ์ฝ”๋“œ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ  ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์กฐํ•ฉํ•˜์—ฌ ์–ธ์ œ๋“ ์ง€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ ์ปค๋ง์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  : ํ•จ์ˆ˜์˜ ์žฌํ™œ์šฉ ๋•Œ๋ฌธ ํ•จ์ˆ˜์˜ ์žฌํ™œ์šฉ ์˜ˆ์‹œ : function multiply(a, b) { return a * b; } function mulitplyTwice(a) { return multiply(a, 2); } // โ“ function multiplyX(x) { return function(a) { return multiply(a, x); } } // โ“‘ const multiplyX = x => a => multiply(a, x); // โ“’โ€‹ โ”” โ“ : multiply() ํ•จ์ˆ˜๋ฅผ ์žฌํ™œ์šฉํ•˜์—ฌ a์— 2๋ฅผ ๊ณฑํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•จ โ”” โ“‘ : ์ธ์ž x๋ฅผ ๋ฐ›์•„ ์ด๋ฆ„ ..

React/Component

์ปดํฌ๋„ŒํŠธ (6) - ์ฝœ๋ฐฑ ํ•จ์ˆ˜, ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ

์ปดํฌ๋„ŒํŠธ์—์„œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ž€ ์ •์˜๋œ ์œ„์น˜์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ , ์ดํ›„ ํŠน์ • ์ƒํ™ฉ์—์„œ ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งํ•จ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ๋•Œ ํ”„๋กœํผํ‹ฐ ์›๋ณธ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์— ์ œ๊ณตํ•˜๋ฉด ๋จ ๋”ฐ๋ผ์„œ, ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ํ”„๋กœํผํ‹ฐ๋กœ ์ „๋‹ฌํ•˜๋ฉด ๋จ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋กœ ํ”„๋กœํผํ‹ฐ ์ˆ˜์ • : (src/App.js) import React from 'react'; import Counter from './ex/Counter2'; class App extends React.Component { constructor(props) { super(props); this.state = { count: 1 }; } increase() { this.setState(({ count }) => ({ count: cou..

React/Component

์ปดํฌ๋„ŒํŠธ (5) - ํด๋ž˜์Šคํ˜•, ํ•จ์ˆ˜ํ˜•, ๋ฐฐ์—ด

ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ๋Š” ๋ฆฌ์•กํŠธ ์ƒ๋ช…์ฃผ๊ธฐ ํ•จ์ˆ˜์™€ ์ปดํฌ๋„ŒํŠธ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•˜๊ณ  ์žˆ์Œ ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ๋Š” Component์™€ PureComponent์˜ ๋‘ ์ข…๋ฅ˜์˜ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•จ Component Component ํด๋ž˜์Šค๋Š” ํ”„๋กœํผํ‹ฐ, state์™€ ์ƒ๋ช…์ฃผ๊ธฐ ํ•จ์ˆ˜๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๊ตฌ์กฐ์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•จ Component ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค์–ด์ง„ ์ปดํฌ๋„ŒํŠธ๋Š” ํ•ญ์ƒ render() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•จ Component ์˜ˆ์‹œ : import React from 'react'; class MyComp extends React.Component { constructor(props) { super(props); console.log('์ƒ์„ฑ'); } componentDidMount() { } myMethod() ..

React/Component

์ปดํฌ๋„ŒํŠธ(4) - ์ƒ๋ช…์ฃผ๊ธฐ

์ปดํฌ๋„ŒํŠธ ์ƒ๋ช…์ฃผ๊ธฐ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ž€ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒ์„ฑ๋ถ€ํ„ฐ ์†Œ๋ฉธ๊นŒ์ง€์˜ ๊ณผ์ •์„ ๋งํ•จ ์ปดํฌ๋„ŒํŠธ๋Š” ์ƒ๋ช…์ฃผ๊ธฐ๋งˆ๋‹ค ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ ์ด ํ•จ์ˆ˜๋“ค์„ ์ด์šฉํ•˜๋ฉด ํŠน์ • ์‹œ์ ์— ์›ํ•˜๋Š” ๋™์ž‘์„ ํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ ์ƒ๋ช…์ฃผ๊ธฐ ํ•จ์ˆ˜ ์ƒ๋ช…์ฃผ๊ธฐ ํ•จ์ˆ˜๋Š” render() ํ•จ์ˆ˜๋ฅผ ํฌํ•จํ•œ ์ด 8๊ฐœ์˜ ํ•จ์ˆ˜๊ฐ€ ์žˆ์Œ ์ƒ๋ช…์ฃผ๊ธฐ ํ•จ์ˆ˜๋Š” ๋ฆฌ์•กํŠธ ์—”์ง„์—์„œ ์ž๋™์œผ๋กœ ํ˜ธ์ถœํ•จ ๋”ฐ๋ผ์„œ, ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งˆ์Œ๋Œ€๋กœ ์ƒ๋ช…์ฃผ๊ธฐ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์Œ โ”” ์ƒ์„ฑ ๊ณผ์ • : ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ๋ถ€ํ„ฐ ์ƒ์„ฑ ์™„๋ฃŒ๊นŒ์ง€ 4๊ฐœ์˜ ์ƒ๋ช…์ฃผ๊ธฐ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋จ โ”” ๊ฐฑ์‹  ๊ณผ์ • : ์ƒ์„ฑ ์™„๋ฃŒ๋ถ€ํ„ฐ ๊ฐฑ์‹  ์™„๋ฃŒ๊นŒ์ง€ 5๊ฐœ์˜ ์ƒ๋ช…์ฃผ๊ธฐ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋จ ์ด ๋•Œ, ๊ฐฑ์‹  ๊ณผ์ •์€ shouldComponentUpdate() ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์ด true์ด๋ฉด ์ดํ›„ ๊ณผ์ •์ด ์ง„ํ–‰๋˜๊ณ , shouldComponentUpdate() ํ•จ์ˆ˜์˜ ..