'Framework > React' 카테고리의 다른 글

[React] 웹 스토리지 이용하기  (0) 2024.07.09
[React] navigate 에러 (홈 화면으로 돌아가기)  (0) 2024.07.08
[React] React Router  (0) 2024.07.03
[React] 페이지 라우팅  (0) 2024.07.02
[React] Context  (0) 2024.07.02

npm i react-router-dom

 

Routes 안에는 Route만 들어갈 수 있음

 

페이지 라우터 이동 1

 

페이지 라우터 이동 2

 

동적 경로 (Dynamic Segments)

동적인 데이터를 포함하고 있는 경로

 

 

 

파라미터 꺼내오기

 

쿼리스트링 값 꺼내오기

'Framework > React' 카테고리의 다른 글

[React] navigate 에러 (홈 화면으로 돌아가기)  (0) 2024.07.08
[React] 폰트  (0) 2024.07.03
[React] 페이지 라우팅  (0) 2024.07.02
[React] Context  (0) 2024.07.02
[React] useMemo, React.memo  (0) 2024.07.02

페이지 라우팅

경로에 따라 알맞은 페이지를 렌더링 하는 과정

 

페이지 라우팅의 원리

 


Multi Page Application(MPA)

애초에 서버가 여러개의 페이지를 가지고 있음많은 서비스가 사용하는 전통적인 방식


서버 사이드 렌더링 (Server Side Rendering)

  • 미리 만들어진 페이지를 응답

 

but, React.js는 이 방식을 따르지 않음 (쾌적한 페이지 이동 제공이 어렵기 때문)

 

SPA (Single Page Application)

React App이 채택한 방식

 

클라이언트 사이드 렌더링 (Client Side Rendering)

 

 

 

 

'Framework > React' 카테고리의 다른 글

[React] 폰트  (0) 2024.07.03
[React] React Router  (0) 2024.07.03
[React] Context  (0) 2024.07.02
[React] useMemo, React.memo  (0) 2024.07.02
[React] 최적화 (Optinization)  (0) 2024.07.02

React Context

컴포넌트간의 데이터를 전달하는 또 다른 방법

기존의 Props가 가지고 있던 단점을 해결할 수 있음

 

Props에 어떤 단점인 Props Drinlling을 해결

 

 

 

 

 

 

 

부모 컴포넌트

import { useState, useRef, useReducer, useCallback, createContext } from 'react';

export const TodoContext = createContext();
console.log(TodoContext);

return (
  <div className='app'>
    {/* <Exam /> */}
    <Header />
    <TodoContext.Provider value={{todos, onCreate, onUpdate, onDelete}}>
      <Editor />
      <List />
    </TodoContext.Provider>
  </div>
  )

 

콘솔 찍어보면 위의 value( todos, onCreate, onUpdate, onDelete)와 감싸고있는 editor, list가 나옴

 

자식 컴포넌트

import { useState, useRef, useContext } from 'react';
import { TodoContext } from '../App';

const Editor = () => {
    console.log(useContext(TodoContext));
    const {onCreate} = useContext(TodoContext);
}

 

생길 수 있는 문제

 

todos가 업데이트 될 때에 나머지도 다 리랜더링

 

 

 

해결책

 

 

부모 컴포넌트

export const todoStateContext = createContext();
export const todoDispatchContext = createContext();

const memoizedDispatch = useMemo(() => {return {onCreate, onUpdate, onDelete}}, [])

return (
<div className='app'>
{/* <Exam /> */}
<Header />
<todoStateContext.Provider value={todos}>
  <todoDispatchContext.Provider value={memoizedDispatch}>
    <Editor />
    <List />
  </todoDispatchContext.Provider>
</todoStateContext.Provider>
</div>
)

 

자식 컴포넌트

import { todoDispatchContext } from '../App';

const Editor = () => {
    console.log(useContext(todoDispatchContext));
    const {onCreate} = useContext(todoDispatchContext);
}

 

import { todoStateContext } from '../App';

const List = () => {
    console.log(useContext(todoStateContext));
    const todos = useContext(todoStateContext); // 하나만 들어있어서 구조분해 할당이 아님
}

'Framework > React' 카테고리의 다른 글

[React] React Router  (0) 2024.07.03
[React] 페이지 라우팅  (0) 2024.07.02
[React] useMemo, React.memo  (0) 2024.07.02
[React] 최적화 (Optinization)  (0) 2024.07.02
[React] useReducer  (0) 2024.07.02

useMemo

"메모이제이션" 기법을 기반으로 불 필요한 연산을 최적화하는 리액트 훅

 

React.memo

컴포넌트 인수를 받아, 최적화된 컴포넌트로 만들어 반환

 

컴포넌트의 설정 누르면
체크박스 누르면 리렌더링 되었을 때 알려준다

'Framework > React' 카테고리의 다른 글

[React] 페이지 라우팅  (0) 2024.07.02
[React] Context  (0) 2024.07.02
[React] 최적화 (Optinization)  (0) 2024.07.02
[React] useReducer  (0) 2024.07.02
[React] 리액트 컴포넌트의 라이프사이클  (0) 2024.06.28

최적화 (Optinization)

웹 서비스의 성능을 개선하는 모든 행위를 일컫음

아주 단순한 것부터 아주 어려운 방법까지 매우 다양함

 

React App 내부의 최적화 방법

  • 컴포넌트 내부의 불 필요한 함수 재생성 방지
  • 컴포넌트의 불 필요한 리렌더링 방지

'Framework > React' 카테고리의 다른 글

[React] Context  (0) 2024.07.02
[React] useMemo, React.memo  (0) 2024.07.02
[React] useReducer  (0) 2024.07.02
[React] 리액트 컴포넌트의 라이프사이클  (0) 2024.06.28
[React] React Hooks  (0) 2024.06.28

useReducer

  • 컴포넌트 내부에 새로운 State를 생성하는 React Hook
  • 모든 useState는 useReducer로 대체 가능
  • 상태 관리 코드를 컴초넌트 외부로 분리할 수 있음

 

'Framework > React' 카테고리의 다른 글

[React] useMemo, React.memo  (0) 2024.07.02
[React] 최적화 (Optinization)  (0) 2024.07.02
[React] 리액트 컴포넌트의 라이프사이클  (0) 2024.06.28
[React] React Hooks  (0) 2024.06.28
[React] useRef  (0) 2024.06.27

라이프 사이클 제어

라이프사이클의 단계
서버에서 데이터를 불러오는 작업

 

어떤 값이 변경되었는지 콘솔에 출력

 

컴포넌트가 사용하던 메모리 정리

 

'Framework > React' 카테고리의 다른 글

[React] 최적화 (Optinization)  (0) 2024.07.02
[React] useReducer  (0) 2024.07.02
[React] React Hooks  (0) 2024.06.28
[React] useRef  (0) 2024.06.27
[React] State로 사용자 입력 관리하기  (0) 2024.06.27

+ Recent posts