리액트를 좋아해서 알아가기3

BellBoy·2024년 2월 1일
0
post-thumbnail
post-custom-banner

Next 프로젝트에서 action.ts service.js use를 사용하는 훅 이렇게 세곳이 로직이라면
외부 api를 이용해서 axios로 결제를 처리하고 데이터베이스에 값을 저장하고 를 진행한다면
결제를 요청하는 axios는 어느부분에서 처리해야하고 db를 저장하고 처리하는 부분은 어디서 처리하고
action service 그리고 훅 이 세가지가 정확이 어떤 역할을 해야하는지 잘 모르겠어

Next.js 프로젝트에서 action.ts, service.js, 그리고 훅이 로직을 처리하는 부분이라면, 각각의 역할은 대체로 다음과 같습니다:

action.ts: 이 파일은 주로 Redux와 같은 상태 관리 라이브러리에서 사용되며, 애플리케이션에서 일어나는 모든 동작(또는 이벤트)를 정의합니다. 예를 들어, 사용자가 버튼을 클릭하면 해당 '액션'이 발생하고, 이 액션을 처리하는 '리듀서'가 상태를 업데이트합니다.
service.js: 이 파일은 보통 애플리케이션의 비즈니스 로직을 처리하는 곳입니다. 예를 들어, 외부 API를 호출하거나, 데이터베이스에 접근하여 데이터를 읽고 쓰는 등의 작업을 처리합니다.
hooks: 훅은 React의 상태와 생명주기 기능을 함수 컴포넌트에서 사용할 수 있게 해주는 기능입니다. 예를 들어, useState, useEffect 등의 훅을 사용할 수 있습니다. 또한, 커스텀 훅을 만들어 자주 사용하는 로직을 재사용할 수 있습니다.
따라서, 결제 요청을 처리하는 axios 호출은 service.js에서, 그리고 데이터베이스에 값을 저장하는 로직도 service.js에서 처리해야 합니다. 이후에 이러한 서비스 함수를 훅에서 호출하고, 그 결과를 상태로 관리할 수 있습니다.

그리고 이러한 상태를 변경하는 액션들을 action.ts에서 정의하고, 이 액션들을 디스패치하여 상태를 업데이트하는 방식으로 작업을 진행할 수 있습니다.

다만, 이러한 구조는 프로젝트의 요구사항과 개발팀의 선호에 따라 달라질 수 있으므로, 팀의 코드 컨벤션과 아키텍쳐를 따르는 것이 중요합니다.

그러면 어떤 버튼을 눌렀을때 로직을 어떻게 타야할까 hook -> actions -> service 이런식으로 처리되어야하나?
정답은 없겠지만 내가 생각했을때는 버튼을 누르면 바로 서비스를 호출하고 service에서 actions과 훅을 호출해야하나 싶은데 그럼 actions과 훅은 똑같은 역할이 아닌가 싶어?

질문에 대한 답변을 드리기 전에, 먼저 React와 Redux(또는 다른 상태 관리 라이브러리)의 기본적인 워크플로우를 이해하는 것이 중요합니다.

React와 Redux를 사용하는 애플리케이션에서 일반적인 데이터 흐름은 다음과 같습니다:

사용자는 UI에서 어떠한 행동(버튼 클릭 등)을 합니다.
이 행동에 응답하여, 애플리케이션은 특정 액션을 디스패치합니다.
액션은 애플리케이션의 상태를 변경하는 데 사용되는 객체입니다.
리듀서는 이 액션을 받아 상태를 업데이트합니다.
상태가 변경되면, 이에 반응하여 UI가 업데이트됩니다.
여기서, 서비스는 주로 애플리케이션의 비즈니스 로직을 처리하는 부분입니다. 예를 들어, 서버에 데이터를 요청하거나 데이터베이스에 접근하는 등의 작업을 수행합니다. 따라서, 서비스는 일반적으로 액션 내에서 호출되며, 그 결과는 상태를 업데이트하는 데 사용됩니다.

훅은 React의 기능으로, 함수 컴포넌트에서 상태와 생명주기 기능을 사용할 수 있게 해줍니다. 따라서 훅은 UI와 직접적으로 관련된 로직을 처리하는 데 주로 사용됩니다.

따라서, 일반적인 워크플로우는 다음과 같습니다:

사용자가 버튼을 클릭합니다.
훅에서 이 클릭 이벤트를 처리하고, 액션을 디스패치합니다.
액션 내에서 서비스 함수를 호출하고, 그 결과를 사용하여 상태를 업데이트합니다.
이러한 방식으로 작업을 진행하면, 각 부분이 자신의 역할에 집중할 수 있습니다. 즉, UI 로직은 훅에서, 비즈니스 로직은 서비스에서, 상태 관리는 Redux에서 처리하게 됩니다. 이렇게 각 부분의 책임을 명확하게 분리하면, 코드의 유지보수와 테스트가 용이해집니다.

profile
리액트러버
post-custom-banner

0개의 댓글