Welcome To

ํ›„๋‹ˆ's Blog

Hello World
Let's Focus On
์ปดํฌ๋„ŒํŠธ (6) - ์ฝœ๋ฐฑ ํ•จ์ˆ˜, ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
ยท
React/Component
์ปดํฌ๋„ŒํŠธ์—์„œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ž€ ์ •์˜๋œ ์œ„์น˜์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ , ์ดํ›„ ํŠน์ • ์ƒํ™ฉ์—์„œ ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งํ•จ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ๋•Œ ํ”„๋กœํผํ‹ฐ ์›๋ณธ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์— ์ œ๊ณตํ•˜๋ฉด ๋จ ๋”ฐ๋ผ์„œ, ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ํ”„๋กœํผํ‹ฐ๋กœ ์ „๋‹ฌํ•˜๋ฉด ๋จ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋กœ ํ”„๋กœํผํ‹ฐ ์ˆ˜์ • : (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..
์ปดํฌ๋„ŒํŠธ (5) - ํด๋ž˜์Šคํ˜•, ํ•จ์ˆ˜ํ˜•, ๋ฐฐ์—ด
ยท
React/Component
ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ๋Š” ๋ฆฌ์•กํŠธ ์ƒ๋ช…์ฃผ๊ธฐ ํ•จ์ˆ˜์™€ ์ปดํฌ๋„ŒํŠธ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•˜๊ณ  ์žˆ์Œ ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ๋Š” 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() ..
์ปดํฌ๋„ŒํŠธ(4) - ์ƒ๋ช…์ฃผ๊ธฐ
ยท
React/Component
์ปดํฌ๋„ŒํŠธ ์ƒ๋ช…์ฃผ๊ธฐ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ž€ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒ์„ฑ๋ถ€ํ„ฐ ์†Œ๋ฉธ๊นŒ์ง€์˜ ๊ณผ์ •์„ ๋งํ•จ ์ปดํฌ๋„ŒํŠธ๋Š” ์ƒ๋ช…์ฃผ๊ธฐ๋งˆ๋‹ค ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ ์ด ํ•จ์ˆ˜๋“ค์„ ์ด์šฉํ•˜๋ฉด ํŠน์ • ์‹œ์ ์— ์›ํ•˜๋Š” ๋™์ž‘์„ ํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ ์ƒ๋ช…์ฃผ๊ธฐ ํ•จ์ˆ˜ ์ƒ๋ช…์ฃผ๊ธฐ ํ•จ์ˆ˜๋Š” render() ํ•จ์ˆ˜๋ฅผ ํฌํ•จํ•œ ์ด 8๊ฐœ์˜ ํ•จ์ˆ˜๊ฐ€ ์žˆ์Œ ์ƒ๋ช…์ฃผ๊ธฐ ํ•จ์ˆ˜๋Š” ๋ฆฌ์•กํŠธ ์—”์ง„์—์„œ ์ž๋™์œผ๋กœ ํ˜ธ์ถœํ•จ ๋”ฐ๋ผ์„œ, ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งˆ์Œ๋Œ€๋กœ ์ƒ๋ช…์ฃผ๊ธฐ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์Œ โ”” ์ƒ์„ฑ ๊ณผ์ • : ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ๋ถ€ํ„ฐ ์ƒ์„ฑ ์™„๋ฃŒ๊นŒ์ง€ 4๊ฐœ์˜ ์ƒ๋ช…์ฃผ๊ธฐ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋จ โ”” ๊ฐฑ์‹  ๊ณผ์ • : ์ƒ์„ฑ ์™„๋ฃŒ๋ถ€ํ„ฐ ๊ฐฑ์‹  ์™„๋ฃŒ๊นŒ์ง€ 5๊ฐœ์˜ ์ƒ๋ช…์ฃผ๊ธฐ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋จ ์ด ๋•Œ, ๊ฐฑ์‹  ๊ณผ์ •์€ shouldComponentUpdate() ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์ด true์ด๋ฉด ์ดํ›„ ๊ณผ์ •์ด ์ง„ํ–‰๋˜๊ณ , shouldComponentUpdate() ํ•จ์ˆ˜์˜ ..
์ปดํฌ๋„ŒํŠธ(3) - ์ƒํƒœ ๊ด€๋ฆฌ
ยท
React/Component
์ปดํฌ๋„ŒํŠธ ์ƒํƒœ ๊ด€๋ฆฌ ํ”„๋กœํผํ‹ฐ์˜ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋Š” ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์Œ ์ด ๋•Œ, ๊ฐ’์„ ๋ฐ”๊ฟ”์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ƒํƒœ(state)๋ฅผ ์‚ฌ์šฉํ•จ state๋กœ ์ƒํƒœ ๊ด€๋ฆฌ state๋Š” ๊ฐ’์„ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด ๋ณดํ†ต ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ฑฐ๋‚˜ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋Š” ๋“ฑ์˜ ์ด๋ฒคํŠธ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋จ state๋กœ ์ƒํƒœ ๊ด€๋ฆฌ ์˜ˆ์‹œ (/src/ex/State) : import React from 'react'; class State extends React.Component { constructor(props) { super(props); this.state = { // โ“ loading: true, formData: 'nothing' }; this.handle = this.handle.bind(this); // โ“‘ setTim..
์ปดํฌ๋„ŒํŠธ(2) - ํ”„๋กœํผํ‹ฐ
ยท
React/Component
ํ”„๋กœํผํ‹ฐ ํ”„๋กœํผํ‹ฐ : ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์— ๊ฐ’์„ ์ „๋‹ฌํ•  ๋•Œ ์‚ฌ์šฉํ•จ ํ”„๋กœํผํ‹ฐ ๊ฐ’์€ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Œ ํ”„๋กœํผํ‹ฐ์˜ ๊ธฐ๋ณธ class App extends React.Component { render() { return ( ); } }โ€‹ โ”” App ์ปดํฌ๋„ŒํŠธ์—์„œ ํ”„๋กœํผํ‹ฐ๋ฅผ Mycomp ์ปดํฌ๋„ŒํŠธ์— ์ „๋‹ฌํ–ˆ์Œ โ”” ์†์„ฑ ํ˜•ํƒœ๋กœ ์ „๋‹ฌ๋˜๋Š” ๊ฐ’์„ ํ”„๋กœํผํ‹ฐ๋ผ ํ•จ class MyComp extends React.Component { render() { const name = this.props.name; return {name}; } } โ”” Mycomp ์ปดํฌ๋„ŒํŠธ์—์„œ name์ด๋ผ๋Š” ์ด๋ฆ„์˜ ํ”„๋กœํผํ‹ฐ๋กœ ์ „๋‹ฌ๋ฐ›์€ "hoony"๋ผ๋Š” ๋ฌธ์ž์—ด ๊ฐ’์„ render() ํ•จ์ˆ˜์—์„œ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Œ โ”” render() ํ•จ์ˆ˜์—์„œ this.prop..
์ปดํฌ๋„ŒํŠธ (1) - JSX, ์ปดํฌ๋„ŒํŠธ
ยท
React/Component
JSX JSX๋Š” JavaScript XML์˜ ์ค„์ž„๋ง ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— XML์„ ์ถ”๊ฐ€ํ•œ ํ™•์žฅํ˜• ๋ฌธ๋ฒ• ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ HTML์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ๋™์‹œ์— ์ž‘์„ฑ ํ•  ์ˆ˜ ์žˆ์–ด ํŽธํ•จ JSX ์˜ˆ์‹œ (App.js): import React from 'react'; class App extends React.Component { render() { return ( // ์•„๋ž˜์˜ ๋‚ด์šฉ์ด JSX ์•ˆ๋…•ํ•˜์„ธ์š” ); } } export default App;โ€‹ โ”” img์˜ ๋งจ ๋์ด />๋กœ ๋๋‚จ โ”” JSX๋Š” HTML์ด ์•„๋‹ˆ๋ผ XML ๋งˆํฌ์—… ๊ทœ์น™์„ ๋”ฐ๋ฅด๊ธฐ ๋•Œ๋ฌธ ๊ฒฐ๊ณผ : JSX์™€ ๊ธฐ์กด ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•์˜ ์ฐจ์ด ๊ธฐ์กด index.js ์ฝ”๋“œ (index.js) import React from 'react'; import ReactDOM from ..
React ES6 (5) - ๋น„๋™๊ธฐ ํ•จ์ˆ˜, ๋””๋ฐ”์šด์Šค & ์Šค๋กœํ‹€
ยท
React/ES6
๋น„๋™๊ธฐ ํ•จ์ˆ˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•จ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ž€? ์ž‘์—… ์‹œ๊ฐ„์ด ๊ธด A๋ฅผ ์ฒ˜๋ฆฌํ•˜๋А๋ผ ๋‹ค๋ฅธ ์ž‘์—…๋“ค์ด ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ๋‹ค๋ฅธ ์ž‘์—…๋“ค์„ ๋จผ์ € ์ง„ํ–‰ํ•˜๊ณ  ์ž‘์—… A์™€ A์™€ ์—ฐ๊ด€๋œ ์ž‘์—…์„ ์ดํ›„์— ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹ ex) ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ณผ์ • ๊ธฐ์กด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋น„๋™๊ธฐ ํ•จ์ˆ˜ ์ฒ˜๋ฆฌ ์ง€์—ฐ ์ž‘์—…์ด ํ•„์š”ํ•œ ํ•จ์ˆ˜์— setTimeout() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ–ˆ์Œ ์ง€์—ฐ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๊ณ ๋‚˜๋ฉด ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ํ•จ์ˆ˜๋Š” ์ง€์—ฐ ์ž‘์—… ํ•จ์ˆ˜์˜ ์ธ์ž์ธ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋กœ ์ „๋‹ฌํ•˜์—ฌ ์ฒ˜๋ฆฌํ–ˆ์Œ ์˜ˆ์‹œ : function do1(a) { setTimeout(() => a('์ž‘์—… A'), 100); } function do2(b) { setTimeout(() => b('์ž‘์—… B'), 200); } function do3(c) { setTimeout..
React ES6 (4) - ๋ฐฐ์—ด ํ•จ์ˆ˜
ยท
React/ES6
๋ฐฐ์—ด ํ•จ์ˆ˜ ๊ธฐ์กด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ Query String์„ ๋ฌธ์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ฐ์ฒด์— ๋‹ด์•„ ๋ณ€ํ™˜ํ•˜๋Š” ์‚ฌ์šฉ ์˜ˆ์ œ : function func(a) { var queryString = a.substr(1); var divide = a.split('&'); var result = {}; for(var i = 0; i < divide.length; i++) { var part = divide[i].split('='); var key = part[0]; var val = part[1]; result[key] = val; } return result; }โ€‹ ๊ฒฐ๊ณผ : โ”” ์ด ๋•Œ, 3002, 25, 1997์„ ๋ฌธ์ž์—ด๋กœ ๋ถ„๋ฆฌํ•œ๋‹ค. 3002, 25, 1997์„ ๋ฌธ์ž์—ด์ด ์•„๋‹Œ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ function func(a)..