react에서 redux를 쓸 때 왜 features라는 폴더를 만드는가.

완두콩·2023년 4월 23일
1

redux/toolkit

목록 보기
3/8

react에서 redux를 쓸 때 왜 features라는 폴더를 만드는가.

"features"는 "slices"의 집합을 의미하는 용어이고,
"features" 폴더는 이러한 "slice"를 그룹화하는 곳으로 사용한다.

redux toolkit에서 createSlice함수를 사용하여 redux 상태를 관리하는 Reducer 함수와 Action 생성자 함수를 모듈화하여 사용한다.
Reducer 함수와 Action 생성자 함수를 관리하기 위해 features라는 폴더를 만들고
각각의 기능 별로 폴더 내부에 slice를 만들어 관리.
이렇게 하면 각각의 기능이 독립적으로 작동하고, 모듈화와 코드 재사용성을 높일 수 있다.

정리하자면 features 폴더 안에 각각의 기능들을 모듈화해서 독립적으로 사용하기 위해서 features라는 폴더를 쓰는 것.

나는 아직 프로젝트에 따라 효율적으로 폴더를 구성하는 것이 어렵다.
그래서 chat GPT에게 효율적인 폴더 구성을 물어봤다.

예시의 폴더 구성

- features/
  - cart/
    - cartSlice.js
     - components/
        - Component1.js
        - Component2.js
  - products/
    - productsSlice.js
     - components/
        - Component1.js
        - Component2.js
  - user/
    - userSlice.js
     - components/
        - Component1.js
        - Component2.js

features 폴더는 기능별로 폴더를 만들어 그 안에 해당 기능에서 사용하는 리덕스 관련 파일들과 컴포넌트들을 모아둔 폴더이다.
이 폴더 안에는 해당 기능에서 사용하는 Redux slice, 컨테이너 컴포넌트, 그리고 이 기능에서만 사용하는 컴포넌트들이 위치.

RTK 쿼리로 API까지 관리하게 된다면

src/
  |- components/
  |- features/
     |- Feature1/
        |- Feature1Slice.js
        |- Feature1Api.js
        |- Feature1.jsx
     |- Feature2/
        |- Feature2Slice.js
        |- Feature2Api.js
        |- Feature2.jsx
     |- ...
  |- pages/
     |- Page1/
        |- Page1.jsx
        |- Page1Slice.js
        |- Page1Api.js
     |- Page2/
        |- Page2.jsx
        |- Page2Slice.js
        |- Page2Api.js
     |- ...
  |- app/
     |- store.js
     |- App.jsx
  |- index.js
  |- ...

components: 페이지에서 사용되는 재사용 가능한 컴포넌트를 포함.

features: 비즈니스 로직을 포함하는 폴더. 각 기능별로 하나의 폴더를 만들어서, 해당 기능과 관련된 슬라이스, API 함수, 그리고 컴포넌트를 포함.

pages: 각 페이지를 포함하는 폴더. 각 페이지별로 하나의 폴더를 만들어서, 해당 페이지와 관련된 슬라이스, API 함수, 그리고 컴포넌트를 포함.

app: 앱 전체적인 설정과 상태관리를 위한 폴더. store.js 파일에 전역 스토어 설정을 작성하고, App.jsx 파일에는 라우터와 전역 상태를 사용할 수 있도록 Provider를 설정.

profile
공부하자. 기록하자. 쫌!

0개의 댓글