web/snulion

상태관리에 대해 araboza (2)

민사민서 2024. 10. 5. 14:36

상태 관리의 유형은

1. 전역 vs 로컬

전역 상태 관리

전역 상태(global state) 관리는 프로젝트 전체에 영향을 미치는 상태를 관리하는 것

로컬 상태 관리

로컬 상태(local state) 관리는 특정 기능 또는 컴포넌트 내에서만 사용되는 상태를 관리하는 것

 

2. 클라이언트 vs 서버

클라이언트는 프론트 <> 유저 간 상호작용, 서버는 프론트 <> 백 간 상호작용 느낌으로 이해하자고요

 

Redux의 원칙

1. single source of truth

Action → Dispatcher → Store → View의 순서로 데이터 흐름을 단방향으로 제어하기 위한 아키텍처

 

2. state is read-only

 

3. Changes are Made with Pure Functions

function sampleReducer(state, action) {
    switch (action.type) {
        case "SAMPLE_ACTION":
            return {
                ...state,
                value: action.value
            };
        default:
            return state;
    }
}

이런 식으로 immutable update 수행

 

Redux Toolkit

얘를 왜쓰냐?

Redux를 사용하는 과정이 너무 복잡하고, 제대로 사용하려면 설치해야할 패키지가 너무 많고, 작성해야 할 코드의 양이 너무 많아,,

“The official, opinionated, batteries-included toolset for efficient Redux development”

 

Slice라는 개념이 등장한다!!

- Redux 구성 요소들의 조각

- Action Type, Action Creator, 그리고 Reducer 등을 조각으로 분리해놓은 것, createSlice() 로 생성한다

 

Redux Toolkit의 주요 API

- configureStore() : Redux Store를 만들 때 사용하는 함수

- createAction() : Action Type과 Action Creator를 만들어 주는 함수

- createReducer() : Reducer를 만들어 주는 함수 (Redux Toolkit은 내부적으로 immer.js를 사용하여 불변성을 자동으로 처리)

- createSlice() : 함수의 파라미터로 slice의 이름을 나타내는 name, 초기 State를 나타내는 initialState, 그리고 각 Action에 대한 reducers까지 넣어줌, redux 구성 요소들의 조각인 slice 생성

- current() : Reducer 내에서 state를 변환하는 과정 중에 draftState의 현재 state 값을 가져올 때 사용하는 함수

 

추천 학습 링크 (TODO) 

Redux

https://nomadcoders.co/redux-for-beginners

https://youtu.be/5yEG6GhoJBs?si=83ClEVjjoK9n6I9F

Zustand

https://awesomedevin.github.io/zustand-vue/en/docs/introduce/start/zustand

https://youtu.be/fZPgBnL2x-Q?si=1wp54i10F0Y7a5q2

TanStack Query

https://tanstack.com/query/latest/docs/framework/react/overview

https://youtu.be/NOvx4LB6Hfk?si=eTsPbFfiVvj2XdiS

https://beomy.github.io/tech/react/tanstack-query-v4/

 

 

 

 

 

 

 

 

 

 

 

'web > snulion' 카테고리의 다른 글

WAS, WSGI, ASGI에 대해 araboza  (0) 2024.11.02
websocket에 대해 araboza  (0) 2024.11.02
카카오페이를 이용한 간편결제에 대해 araboza  (6) 2024.10.05
상태관리에 대해 araboza  (1) 2024.09.25
OAuth 2.0에 대해 araboza  (2) 2024.09.25