Web & App/Frontend Study 41

React _ react-router-dom의 기능을 활용한 auth 관리

React Router를 활용한 사용자 인증 구현이 글에서는 React Router와 fetch API를 이용해 사용자 인증 로직을 구현하는 방법을 설명한다. 로그인(login)과 회원가입(signup) 모드를 처리하며, 서버와의 통신, 인증 토큰 저장, 그리고 만료 시간 관리 등 전체적인 인증 흐름을 다룬다.코드 구성작성한 코드는 다음 두 가지 주요 부분으로 나뉜다.AuthenticationPage 컴포넌트사용자에게 로그인/회원가입 폼을 제공한다.action 함수사용자가 입력한 데이터를 처리하고, 서버와 통신하는 역할을 한다.AuthenticationPage 컴포넌트import { redirect } from "react-router-dom";import AuthForm from "../componen..

React _ loader 란?

React Router의 loader 기능에 대해 알아보자loader란 무엇인가?React Router v6.4 이상에서 소개된 loader는 컴포넌트가 렌더링되기 전에 데이터를 가져오는 데 사용되는 새로운 기능이다. 이를 통해 서버에서 데이터를 가져오거나 비동기 작업을 수행한 뒤 컴포넌트에 데이터를 제공할 수 있다. loader는 주로 라우트와 연결되며, 데이터를 컴포넌트에 prop 형태로 전달한다.loader의 주요 특징비동기 데이터 가져오기 loader는 fetch나 axios와 같은 비동기 API 호출을 통해 데이터를 가져올 수 있다. 이 과정은 라우트가 렌더링되기 전에 이루어진다.라우트와 연결된 데이터 로딩 loader는 라우트에 특정 데이터를 미리 로드하여 컴포넌트가 데이터를 바로 사용할 수 ..

React _ 라우팅 및 페이지 #2

React Router의 핵심 기능: NavLink, useNavigate, useParams React Router는 React 애플리케이션에서 동적인 라우팅을 구현하는 데 필수적인 도구다. 이번 글에서는 React Router의 주요 기능인 NavLink, useNavigate, 그리고 useParams를 활용해 라우팅을 효율적으로 설계하는 방법을 적어본다.1. NavLink를 활용한 현재 위치 읽기NavLink는 React Router에서 제공하는 컴포넌트로, 현재 사용자가 위치한 페이지를 쉽게 확인할 수 있도록 도와준다. 특히 isActive 값을 활용하면 현재 링크가 활성화된 상태인지 확인할 수 있으며, 이를 통해 동적으로 스타일을 적용할 수 있다.기본 사용법 (isActive ? "active..

React _ Router에서 상대경로와 절대경로

React Router에서 상대경로와 절대경로: 개념부터 활용까지React Router에서 경로를 설정할 때 "상대경로"와 "절대경로"는 매우 중요한 개념이다. 특히 Link와 relative 속성을 적절히 사용하면 애플리케이션의 라우팅을 효율적으로 관리할 수 있다. 이번 글에서는 상대경로와 절대경로의 차이점, /의 유무, 그리고 relative 속성의 활용법까지 단계별로 다룬다.1. 절대경로 (Absolute Path)절대경로는 애플리케이션의 루트(/)를 기준으로 경로를 정의한다. URL이 항상 루트에서 시작되기 때문에 현재 위치와 상관없이 지정된 경로로 이동한다.예시:Products항상 /products로 이동한다.현재 경로와 상관없이 동일한 결과를 제공한다.사용 시기:전역적으로 접근해야 하는 경로 ..

React _ 라우팅 및 페이지

비교적 여러 프로젝트로 인해 페이지에 관한 지식은 아직 남아있다.하지만 내가 작동원리에 대해 정확히 아느냐?그건 No 다.어찌어찌 프로젝트 완성시키기는 되겠지만 깊은 이해가 어느 정도 필요하다고 생각이 든다. 일단 기본적인 페이지 라우팅 설정이다.import { createBrowserRouter, RouterProvider } from "react-router-dom";import HomePage from "./pages/Home";import ProductsPage from "./pages/Products";const router = createBrowserRouter([ { path: "/", element: }, { path: "/products", element: },]);function..

Redux #4 Redux Thunk

Redux Thunk로 비동기 작업 처리하기Redux Thunk는 Redux에서 비동기 작업(예: HTTP 요청)을 처리할 때 사용하는 미들웨어다. Redux는 기본적으로 객체 형태의 액션만 처리할 수 있지만, Thunk를 사용하면 함수 형태의 액션도 디스패치할 수 있다. 이 글에서는 Redux Toolkit을 사용하여 Thunk로 HTTP 요청을 처리하는 방법을 알아보자.Thunk란 무엇인가?Thunk는 액션을 함수 형태로 만들어 디스패치할 수 있도록 도와주는 미들웨어다. 일반적으로 HTTP 요청과 같은 비동기 작업에서 많이 사용된다. Thunk를 통해 비동기 작업을 실행하고, 작업 결과에 따라 Redux 상태를 업데이트할 수 있다.Redux Thunk로 HTTP 요청 처리하기여기서는 JSONPlace..

Redux #3 _ 다중 Slice

기본적으로 redux toolkit을 이용해서 state 공유 및 관리와 함수 사용등을 알았다.이제 slice를 용도별로 분류하고 여러 개의 state를 사용하는 방법을 알아보자.  처음에는 store폴더에 index.js로 모든 redux 함수들을 모아놨었지만지금은 용도별로 분류했다.여기서 사용한 것은 counter와 auth 이다. 1. authimport { createSlice } from "@reduxjs/toolkit";const initlAuthState = { isAuthenticated: false };const authSlice = createSlice({ name: "auth", initialState: initlAuthState, reducers: { login(state..

Redux 기본 원리

Redux가 굴러가는 원리를 알아보기 위해 몇가지 코드를 작성했다.// import { legacy_createStore } from "redux";const redux = require("redux");//항상 2개의 파라미터를 받아야한다.const counterReducer = (state = { counter: 0 }, action) => { if (action.type === "increment") { return { counter: state.counter + 1, }; } if (action.type === "decrement") { return { counter: state.counter - 1, }; } return state;};const ..