싱글 페이지 애플리케이션(single-page application, SPA, 스파)은 서버로부터 완전한 새로운 페이지를 불러오지 않고 현재의 페이지를 동적으로 다시 작성함으로써 사용자와 소통하는 웹 애플리케이션이나 웹사이트를 말합니다.
Virtual Dom with Diff Algorithm
Virtual DOM은 무엇인가요?
Virtual DOM (VDOM)은 UI의 이상적인 또는 “가상”적인 표현을 메모리에 저장하고 ReactDOM과 같은 라이브러리에 의해 “실제” DOM과 동기화하는 프로그래밍 개념입니다. 이 과정을 재조정이라고 합니다.
const element = <h1>Hello, world!</h1>;
JSX는 JavaScript를 확장한 문법입니다. UI가 어떻게 생겨야 하는지 설명하기 위해 React와 함께 사용할 것을 권장합니다. JSX라고 하면 템플릿 언어가 떠오를 수도 있지만, JavaScript의 모든 기능이 포함되어 있습니다.
import React from 'react'
function First(props) {
const {name, number} = props
return (
<div>이름은 {name}, 숫자는 {number}</div>
)
}
export default First
표시되는 값이 상호작용에 따라 변경될 수 있도록 하기 위해서는 useState
가 꼭 필요하다!
사용자에게 변하는 값을 보여주고자하면 let
이아니라 useState
를 사용한다.
return (
<div>Timer</div>
<div>Timer</div>
)
{}
기호를 쓴다.function Timer() {
let name = "태민"
return (
<div>{name} Timer</div>
)
}
import './App.css';
function App() {
return (
<div className="App">
</div>
);
}
export default App;
{/* 주석내용 */}
형태로 사용한다. return (
{/* 주석내용 */}
<>Timer</>
)
helloWorld
HelloWorld
props는 상위 컴포넌트에서 하위 컴포넌트로 값/변수를 전달하기 위해서 사용된다.
이때, 상위 컴포넌트에서 하위컴포넌트 태그에다가 값을 입력할 때
문자의 경우 변수명 = 문자열
로 쓰고,
숫자의 경우 변수명 = {숫자}
라고 쓴다.
사용자가 특정 timezone 을 제거할 수 있는 세계 시계 만들기 (map 활용)
[세부사항]
[풀어보기]
import React, { useState } from 'react'
import moment from 'moment-timezone'
function Practice() {
const [times, setTiems] = useState
([
{id: 1, tz: 'Asia/Seoul' },
{id: 2, tz: 'Asia/Taipei' },
{id: 3, tz: 'US/Pacific' }
]);
const deleteTime = (id) => {
const newTZ = times.filter(time => time.id !== id)
setTiems(newTZ)
console.log(newTZ)
}
return (
<div>
{times.map((time) => {
return (
<>
<h2>{time.tz}의 현재 시각</h2>
<h3>{moment().tz(time.tz).format('YYYY-MM-DD HH:mm:ss')}</h3>
<button onClick={() => deleteTime(time.id)}>제거하기</button>
</>
)
})}
</div>
)
}
export default Practice
return (
<div>
{times.map((time) => {
return (
<>
<h2>{time.tz}의 현재 시각</h2>
<h3>{moment().tz(time.tz).format('YYYY-MM-DD HH:mm:ss')}</h3>
<button
onClick={() => {setTiems(times.filter(timeElement => timeElement.id !== timeElement.id))}}>
제거하기
</button>
</>
)
})}
</div>
따로 함수를 작성하지 않고 버튼내에서 필터 함수를 사용하는 방법으로 풀이해주셨다.
참고해서 공부하기!