목록2024/11 (19)
heyday2024 님의 블로그
JavaScript의 History API는 클라이언트 단에서의 라우팅을 구현할 때 브라우저의 URL을 조작하며 페이지 이동을 관리하는 데 사용됩니다. 특히 싱글 페이지 애플리케이션(SPA)에서 서버 요청 없이도 URL을 변경하고, 현재 페이지를 새로 고침하지 않으면서 페이지 전환이 이루어지도록 만듭니다.클라이언트 단 라우팅에서 주요하게 사용하는 History API 메서드는 pushState(), replaceState(), 그리고 popstate 이벤트입니다.History API 주요 메서드와 이벤트history.pushState(state, title, url)설명: 현재 페이지를 새로고침하지 않고도 새로운 URL을 기록해 히스토리 스택에 추가합니다.사용 용도: 사용자가 다른 페이지로 이동한 것처럼..
BaaSBaaS(Backend as a Service)란?웹과 모바일 앱 개발을 쉽고 빠르게 할 수 있도록 도와주는 클라우드 기반의 백엔드 서비스===> BaaS를 이용하면 복잡한 백엔드 시스템을 직접 관리하지 않아도 되니, 개발자들이 프론트엔드에 더 집중 가능!구성 요소프론트엔드: 사용자가 보고 상호작용 부분(시각적인 부분 담당)백엔드: 서버 측에서 데이터 처리, 사용자 관리, 로직 처리 담당.데이터베이스: 사용자 정보, 게시글 등 모든 데이터를 저장하고 필요할 때 불러오는 저장소==> BaaS는 서버나 보안 문제를 신경쓰지 않고, 프로트 엔드 개발만 할 수 있도록 도움.( 서버 걱정 없이, 개발에 필요한 기능들을 클라우드에서 바로 이용 가능!! ) Firebase: Google이 운영하는 플랫폼으로..
react-router-dom이란?리액트 프로젝트에서 라우팅을 가능하게 하는 라이브러리. 싱글 페이지 애플리케이션(SPA)에서도 여러 페이지 간 이동하는 것처럼 보이게 해줌. yarn add react-router-dom설치 위한 코드 > import React from "react";import { BrowserRouter, Route, Routes } from "react-router-dom";import Home from "../pages/Home";import About from "../pages/About";import Contact from "../pages/Contact";import Works from "../pages/Works";const Router = () => { return (..
// Action valueconst ADD_TODO = "ADD_TODO";const DELETE_TODO = "DELETE_TODO";const TOGGLE_TODO = "TOGGLE_TODO";// Action Creatorexport const addTodo = (payload) => { return { type: ADD_TODO, payload };};export const deleteTodo = (payload) => { return { type: DELETE_TODO, payload };};export const toggleTodo = (payload) => { return { type: TOGGLE_TODO, payload };};// initial Stateconst initialS..
useState 사용 시, 어떤 컴포넌트에서 생성한 state를 다른 컴포넌트로 보고자 할 때, Props를 통해서 부모 컴포넌트에서 자식 컴포넌트로 그 값을 보내주었음. 이 과정에서 크게 3가지 불편한점이 발견됨: 1. 컴포넌트에서 컴포넌트로 State를 보내기위해서는 반드시 부-모 관계가 되어야함! 2. 조부모 컴포넌트에서 손자 컴포넌트로 값을 보내고자 할때도 반드시 부모 컴포넌트를 거쳐야함. 즉, 정작 부모컴포넌트에서는 그 값이 필요가 없어도 단순히 손자 컴포넌트에게 전달하기 위해 불필요하게 거쳐야만 하는 것을 의미. (조부모 → 부모 → 손자) 3. 자식 컴포넌트에서 부모 컴포넌트로 값을 보낼 수 없음. ==> 이러한 useState의 불편함 때문에 만들어진 도구가 Redux리덕스는 상태 관리를..
리-렌더링의 발생 조건컴포넌트에서 state가 바뀌었을 때컴포넌트가 내려받은 props가 변경되었을 때부모 컴포넌트가 리-렌더링 된 경우 자식 컴포넌트는 모두==> 리액트에서 리렌더링이 자주 발생한다?? 그것은 비효율적인 코드!! ==> 여기서 발생하는 cost를 최대한 줄여야 그 성능이 향상됨. 최적화(Optimization) 필요!! ==> 어떻게하면 불필요한 렌더링을 줄일 수있을까??memoization을 이용하자!!!1. memo(React.memo) : 컴포넌트를 캐싱 ( 고차 컴포넌트(Higher-Order Component, HOC) : 다른 컴포넌트를 받아서 새로운 컴포넌트를 반환하는 함수 )2. useCallback : 함수를 캐싱 (react hook) 3. useMemo : 값을 캐..
1. useStateuseState는 가장 기본적인 hook이며, 함수 컴포넌트에서 가변적인 상태를 가지게 해줌. const [state, setState] = useState(initialState);- useState 라는 함수가 배열을 반환하고, 이것을 구조 분해 문법으로 꺼내놓은 모습.- 위 코드에서는 state를 변수로 사용했고, setState를 이용해서 state 값을 수정할 수 있었음.- 만약 state가 원시 데이터타입이 아닌 객체 데이터 타입인 경우에는 불변성을 유지해줘야함.(spread operator 사용.) 1. 직접 새로운 값을 전달하기setState 함수에 직접 새로운 값을 전달하여 상태를 업데이트.이 경우, 이전 상태를 참조하지 않으므로 단순히 새로운 값을 설정하는 상황..
지금까지 사용해봤던 css 스타일링을 적용 방법: 1. inline styling: 태그에 style 속성을 사용하여 직접 스타일 지정하는 방법. JSX 문법을 사용하므로 {{ key: 'value' }} 형식을 사용해야 함. ({객체 형식} 필수!!!) 2. 순수 html처럼 className을 정해놓고 css 파일에 해당 요소 스타일 정의하기. ==> 하지만 위 두 방식은 조금 비효율적일 수도 있음!!! Inline 스타일링의 단점:가독성 저하: 스타일이 컴포넌트와 뒤섞여 코드가 복잡해지고, 특히 스타일 코드가 길어지면 구조가 흐려짐.재사용성 부족: 같은 스타일을 다른 요소에 재사용하려면 중복 코드 발생.Pseudo-classes 및 Media Queries 제한: :hover, :active 같은 ..
https://dongeul24.github.io/olympic-medal-tracker/ 올림픽 메달 트래커 dongeul24.github.io국가 및 메달 수 추가: 사용자는 국가 이름과 해당 국가의 금, 은, 동 메달 수를 입력하여 새로운 국가를 추가할 수 있습니다.만약 이미 등록된 나라를 추가하고자 한다면, 이미 등록된 국가라고 사용자에게 알려줍니다(alert). 또한, 사용자가 국가명을 적지 않거나, 글자 없이 띄어쓰기만 되어있는 경우, 미리 정의된 유효성 검사에 의해 국가명을 입력하지 않는 한 추가되지 않습니다. (+ form 태그를 사용하여 자동으로 required 속성에 의해 유효성 검사를 해줍니다...)또한, 최대 입력할 수 있는 국가 이름 글자수(세계에서 가장 긴 국가명은 60자를 넘..