πŸ“ƒ Front-End

πŸ“ƒ Front-End/React.js

μ‚¬μš©μž μž…λ ₯ 처리

μ‚¬μš©μžμ—κ²Œ μž…λ ₯을 λ°›λŠ” νƒœκ·ΈλŠ” , λ“± 쑴재 ν•˜λŠ”λ° React μ—μ„œ 직접 핸듀링 ν•  λ•ŒλŠ” μ–΄λ–»κ²Œ ν•˜λŠ” 지 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. useState 이용 βœ” input 의 value μ„€μ • import { useState } from 'react'; const DiaryEditor = () => { const [author, setAuthor] = useState(''); // author λΌλŠ” state λŠ” setAuthor κ°€ μ•„λ‹ˆλ©΄ μƒνƒœλ³€ν™”κ°€ μΌμ–΄λ‚˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. // κ·ΈλŸ¬λ―€λ‘œ ν™”λ©΄ input 창에 μ–΄λ– ν•œ 것도 μž„μ˜λ‘œ μž…λ ₯ ν•  수 μ—†μŠ΅λ‹ˆλ‹€. return ( 였늘의 일기 ); }; export default DiaryEditor; μ΄ˆκΈ°μ— input μ—λŠ” μ•„λ¬΄λŸ° 값도 μž…λ ₯λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ΄μœ λŠ” input νƒœκ·Έμ— val..

πŸ“ƒ Front-End/React.js

Props

μ»΄ν¬λ„ŒνŠΈμ— 데이터λ₯Ό μ „λ‹¬ν•˜λŠ” 방법 데이터λ₯Ό μ „λ‹¬ν•˜λŠ” 방법 ❓ 초기 값을 μ „λ‹¬ν•˜κ³  싢을 경우 {} 을 μ‚¬μš©ν•˜μ—¬ 데이터λ₯Ό 지정 ν•©λ‹ˆλ‹€. JSXμ—μ„œ νŠΉμ • νƒœκ·Έμ— 값을 μ „λ‹¬ν•˜κΈ° μœ„ν•΄μ„œλŠ” {} λ₯Ό μ΄μš©ν•˜κ±°λ‚˜ λ¬Έμžμ—΄λ‘œ μ „λ‹¬ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€ βœ” App.js mport './App.css'; import MyHeader from './my_header'; import Counter from './count'; function App() { return ( // 5λΌλŠ” 값을 전달 ν•©λ‹ˆλ‹€. ); } export default App; λΆ€λͺ¨ μ»΄ν¬λ„ŒνŠΈμΈ App μ—μ„œ μžμ‹ μ»΄ν¬λ„ŒνŠΈμΈ Counter μ—κ²Œ 값을 전달 데이터λ₯Ό μ‚¬μš©ν•˜λŠ” 방법 ❓ βœ” Count.js import React, { useState } from 'react';..

πŸ“ƒ Front-End/React.js

State(μƒνƒœ)

κ³„μ†ν•΄μ„œ λ³€ν™”ν•˜λŠ” 동적인 κ°’, 값에 따라 λ‹€λ₯Έ 행동을 μˆ˜ν–‰ν•˜κ²Œ ν•©λ‹ˆλ‹€. React의 Stateλž€ ❓ μ»΄ν¬λ„ŒνŠΈκ°€ κ°–λŠ” 계속 값이 λ°”λ€ŒλŠ” 동적인 데이터 μƒνƒœλ₯Ό λ°”κΎΈλŠ” λ“±μ˜ κ΄€λ¦¬λŠ” μƒνƒœλ₯Ό 가진 μ»΄ν¬λ„ŒνŠΈκ°€ 직접 κ΄€λ¦¬ν•˜κ²Œ λ©λ‹ˆλ‹€. βœ” useState() μ»΄ν¬λ„ŒνŠΈλŠ” μžμ‹ μ˜ 가진 μƒνƒœ(state)κ°€ λ³€ν™”ν•˜λ©΄, 화면을 λ‹€μ‹œ κ·Έλ € reRender λ₯Ό ν•©λ‹ˆλ‹€. 즉, ν•¨μˆ˜κ°€ λ‹€μ‹œ 호좜 λ©λ‹ˆλ‹€. βœ” λ²„νŠΌμ„ λˆ„λ₯Ό λ•Œλ§ˆλ‹€ +- 1μ”© λ³€ν™”ν•˜λŠ” Counter import React, { useState } from 'react'; const [ count, setCount ] = useState(0); // const [ μƒνƒœ κ°’, μƒνƒœ λ³€ν™” ν•¨μˆ˜ ] = useState(초기 κ°’); // counter.js import React,..

πŸ“ƒ Front-End/React.js

JSX 문법

λ“€μ–΄κ°€κΈ° μ „ React λ™μž‘ 방식 ❓ βœ” λ¨Όμ € μ΅œμƒμœ„ μ»΄ν¬λ„ŒνŠΈ μ •μ˜ import React from 'react'; import ReactDOM from 'react-dom'; import './index.css'; import App from './App'; ReactDOM.render( // (3) , document.getElementById('root') // (2) ); // If you want to start measuring performance in your app, pass a function // to log results (for example: reportWebVitals(console.log)) // or send to an analytics endpoint. Learn more..

πŸ“ƒ Front-End/React.js

Create-React-App

React App을 λ§Œλ“œλŠ” 방법 βœ” 라이브러리의 ν™œμš© React의 packageλ₯Ό λ‹€μš΄λ‘œλ“œ λ°›λŠ”λ‹€κ³  λ°”λ‘œ μ‚¬μš©ν•  μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€. 좔가적인 μ•„λž˜μ™€ 같은 λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ΄ ν•„μš” ν•©λ‹ˆλ‹€. λ¬Όλ‘  이외에도 쑴재 ν•©λ‹ˆλ‹€. βœ” Boiler Plate (Create-React-App) λ³΅μž‘ν•œ ν™˜κ²½ μ„€μ •κΉŒμ§€ λ‹€ 해놓은 package λ₯Ό 감싼 package 미리 틀을 μ€€λΉ„ν•˜κ³  μ‚¬μš©λ§Œ ν•˜λ©΄ λ©λ‹ˆλ‹€. Create-React-App βœ” μ„€μΉ˜ 방법 npx create-react-app 이름 βœ” yarn 1. npm install -g yarn 2. yarn create react-app 파일λͺ… βœ” μ„€μΉ˜ ν›„ 초기 ν”„λ‘œμ νŠΈ 파일 . β”œβ”€β”€ README.md β”œβ”€β”€ package-lock.json β”œβ”€β”€ package.json β”œβ”€β”€ p..

πŸ“ƒ Front-End/React.js

React.js

React.js ReactλŠ” μ›Ή ν”„λ ˆμž„μ›Œν¬λ‘œ, μžλ°”μŠ€ν¬λ¦½νŠΈ 라이브러리의 ν•˜λ‚˜λ‘œμ„œ μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ§Œλ“€κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€. 좜처 : μœ„ν‚€λ°±κ³Ό Why React.js ❓ βœ” React λŠ” Component 기반의 UI 라이브러리 λ§Œμ•½ Header μš”μ†Œμ— λ¬Έμ œκ°€ μƒκ²¨μ„œ μˆ˜μ •ν•΄μ•Ό λ˜λŠ” 상황이면 κΈ°μ‘΄ 방식은 Header λ₯Ό ν¬ν•¨ν•˜κ³  μžˆλŠ” λͺ¨λ“  νŒŒμΌμ„ μˆ˜μ •ν•΄μ•Ό λ©λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ»΄ν¬λ„ŒνŠΈν™” 방식은 μ»΄ν¬λ„ŒνŠΈκ°€ μ •μ˜λœ 파일 ν•˜λ‚˜λ§Œ μˆ˜μ •ν•˜λ©΄ λ‹€λ₯Έ νŽ˜μ΄μ§€λ“€μ€ μžλ™μœΌλ‘œ μˆ˜μ • λ©λ‹ˆλ‹€. 즉, κ³΅ν†΅μœΌλ‘œ μ‚¬μš©λ˜λŠ” μš”μ†Œμ˜ μˆ˜μ • μ‚¬ν•­μ΄λ‚˜, λ¬Έμ œκ°€ λ°œμƒ ν–ˆμ„ 경우 μˆ˜μ •ν•˜κΈ° μˆ˜μ›”ν•˜κ³ , μœ μ§€λ³΄μˆ˜κ°€ μ’‹μ•„μ§‘λ‹ˆλ‹€. βœ” React λŠ” μ„ μ–Έν˜• ν”„λ‘œκ·Έλž˜λ° ν”„λ‘ νŠΈμ—”λ“œ μΈ‘λ©΄μ—μ„œ 였λ₯Έμͺ½μ˜ μ„ μ–Έν˜• ν”„λ‘œκ·Έλž˜λ°μ΄ μš”μ¦˜ μ‹œλŒ€μ— 더 각광 λ°›κ³  μžˆμŠ΅λ‹ˆλ‹€. βœ” Virt..

πŸ“ƒ Front-End/TypeScript

νƒ€μž…μŠ€ν¬λ¦½νŠΈμ˜ λͺ¨λ“ˆ

ES6 와 λΉ„μŠ· ν•©λ‹ˆλ‹€. λͺ¨λ“ˆμ€ μ „μ—­ λ³€μˆ˜μ™€ κ΅¬λΆ„λ˜λŠ” 자체 유효 λ²”μœ„λ₯Ό 가지며 export, import 와 같은 ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ©΄ λ‹€λ₯Έ νŒŒμΌμ—μ„œ μ ‘κ·Όν•  수 μ—†μŠ΅λ‹ˆλ‹€. μ‚¬μš©λ°©λ²• βœ” Export ES6의 export와 같은 λ°©μ‹μœΌλ‘œ λ³€μˆ˜, ν•¨μˆ˜, νƒ€μž…, μΈν„°νŽ˜μ΄μŠ€ 등에 λΆ™μ—¬ μ‚¬μš©ν•©λ‹ˆλ‹€. // types.ts export interface Todo { title: string; checked: boolean; } βœ” Import ES6의 import와 λ™μΌν•œ λ°©μ‹μœΌλ‘œ μ‚¬μš©ν•©λ‹ˆλ‹€. // app.ts import { Todo } from './types' let item: Todo = { title: 'ν•  일 1', checked: false } βœ” Tip import λ₯Ό μž…λ ₯ν•˜κ³  {} 빈 객체λ₯Ό λ¨Όμ € ..

πŸ“ƒ Front-End/TypeScript

νƒ€μž… ν˜Έν™˜(Type Compatibility)

νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ½”λ“œμ—μ„œ νŠΉμ • νƒ€μž…μ΄ λ‹€λ₯Έ νƒ€μž…μ— 잘 λ§žλŠ”μ§€λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. βœ” ꡬ쑰적 타이핑 μ˜ˆμ‹œ ꡬ쑰적 타이핑(structural typing)μ΄λž€ μ½”λ“œ ꡬ쑰 κ΄€μ μ—μ„œ νƒ€μž…μ΄ μ„œλ‘œ ν˜Έν™˜λ˜λŠ”μ§€μ˜ μ—¬λΆ€λ₯Ό νŒλ‹¨ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. βœ” μΈν„°νŽ˜μ΄μŠ€ interface Developer{ name: string; skill: string; } interface Person{ name: string; } let developer: Developer; let person: Person; developer = person; // μ—λŸ¬μ΄μœ  : μ™Όμͺ½μ— μžˆλŠ” λ³€μˆ˜κ°€ 더 큰 관계λ₯Ό 가지고 μžˆμ–΄μ„œ person = developer; // μ—λŸ¬κ°€ μ•ˆλœ¬λ‹€. 였λ₯Έμͺ½μ— μžˆλŠ” νƒ€μž…μ΄ 더 λ§Žμ€ 속성을 κ°€μ§€κ±°λ‚˜, ꡬ쑰적으둜 더 컸을 λ•Œ μ™Όμͺ½κ³Ό ν˜Έν™˜μ΄..

HoHo.dev
'πŸ“ƒ Front-End' μΉ΄ν…Œκ³ λ¦¬μ˜ κΈ€ λͺ©λ‘ (10 Page)