
'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 |

| [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 |


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


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




| [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 |
경로에 따라 알맞은 페이지를 렌더링 하는 과정



애초에 서버가 여러개의 페이지를 가지고 있음많은 서비스가 사용하는 전통적인 방식
서버 사이드 렌더링 (Server Side Rendering)
but, React.js는 이 방식을 따르지 않음 (쾌적한 페이지 이동 제공이 어렵기 때문)
React App이 채택한 방식
클라이언트 사이드 렌더링 (Client Side Rendering)



| [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 |
컴포넌트간의 데이터를 전달하는 또 다른 방법
기존의 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>
)

자식 컴포넌트
import { useState, useRef, useContext } from 'react';
import { TodoContext } from '../App';
const Editor = () => {
console.log(useContext(TodoContext));
const {onCreate} = useContext(TodoContext);
}





부모 컴포넌트
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); // 하나만 들어있어서 구조분해 할당이 아님
}| [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 |
"메모이제이션" 기법을 기반으로 불 필요한 연산을 최적화하는 리액트 훅
컴포넌트 인수를 받아, 최적화된 컴포넌트로 만들어 반환




| [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 |
웹 서비스의 성능을 개선하는 모든 행위를 일컫음
아주 단순한 것부터 아주 어려운 방법까지 매우 다양함
| [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 |


| [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 |




| [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 |