inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실무 중심! FE 입문자를 위한 React

swr과 recoil을 같이 쓰려면 어떻게 쓰면 될까요?

1042

junyoung.jeong

작성한 질문수 2

0

안녕하세요. 유익한 강의 감사합니다.

강의를 다 듣고나니 recoil 과 swr을 같이 쓰고 싶다는 생각이 들어서

redux를 썼던 admin 페이지를 swr과 recoil 조합으로 만들어보다가 막혀서 질문드립니다..

pages/ListPage.js에서

const { data, error, mutate } = useSWR(
    "/surveys?_sort_id&_order=desc",
    fetcher,
  );
  const [survey, setSurvey] = useCurrentQuestion(); // recoil 
  setSurvey(data);

이렇게 swr로 불러온 데이터를 set으로 넣어주고

다른 페이지에서 recoil로 데이터를 불러서 써도 되는지 궁금합니다.

아니면 커스텀 훅에서 swr을 사용해도 괜찮을까요?

 

 

 

 

react redux node.js sass swr

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요.

SWR과 Recoil을 함께 사용하고 싶으시다면, API 호출과 데이터 상태 관리에 SWR을 사용하고, Recoil을 사용하여 상태를 관리하면 됩니다.

첫째로, pages/ListPage.js에서 SWR을 사용하여 데이터를 받아옵니다. SWR은 데이터를 가져오고 캐싱하며, 자동으로 리로드되는 등의 기능을 제공해줍니다. 사용된 코드와 비슷하게 사용하시면 됩니다.

const { data, error, mutate } = useSWR(
  "/surveys?_sort_id&_order=desc",
  fetcher,
);

둘째로, Recoil을 사용하여 데이터를 관리합니다. Recoil은 상태를 효율적으로 관리하기 위한 라이브러리로, 전역 상태 관리를 쉽게 할 수 있습니다. useCurrentQuestion 훅이 Recoil의 useRecoilState와 유사한 역할을 한다고 가정하고 설명드리겠습니다.

먼저 Recoil 상태를 생성합니다. recoil 디렉토리를 생성하고, 그 안에 surveyState.js와 같은 파일을 생성하여 다음과 같이 Recoil 상태를 정의합니다.

import { atom } from 'recoil';

export const surveyState = atom({
  key: 'surveyState',
  default: null, // 초기값은 null로 설정하거나 원하는 값으로 설정하세요.
});

다음으로, useCurrentQuestion 훅을 작성합니다.

import { useRecoilState } from 'recoil';
import { surveyState } from './recoil/surveyState';

export const useCurrentQuestion = () => {
  const [survey, setSurvey] = useRecoilState(surveyState);
  return [survey, setSurvey];
};

이제 ListPage.js에서 SWR로 받아온 데이터를 Recoil 상태로 저장할 수 있습니다.

import { useCurrentQuestion } from './recoil/useCurrentQuestion';
//...

const { data, error, mutate } = useSWR(
  "/surveys?_sort_id&_order=desc",
  fetcher,
);

const [survey, setSurvey] = useCurrentQuestion();
setSurvey(data);

그리고 다른 페이지에서 Recoil로 데이터를 사용할 수 있습니다.

import { useRecoilValue } from 'recoil';
import { surveyState } from './recoil/surveyState';

const survey = useRecoilValue(surveyState);
// survey를 사용하여 데이터를 활용할 수 있습니다.

이렇게 SWR과 Recoil을 함께 사용하면 API 호출을 관리하고 데이터를 전역 상태로 공유할 수 있습니다.

커스텀 훅에서도 SWR을 사용하면 문제없이 사용할 수 있습니다. 커스텀 훅에서 SWR을 사용하면 특정 API 호출을 재사용하거나 필요한 로직을 추가로 구현할 수 있습니다.

조합해서 사용하는 방법으로는 데이터 호출 및 캐싱은 SWR을, 데이터 상태 관리는 Recoil을 사용하는 방법이 일반적입니다.

혹시 더 궁금한 점이 있다면 댓글로 알려주세요. 좋은 하루 되세요!

라우터 궁금사항

0

48

1

자료 Git Source 주소 ??

1

77

1

교육자료 소스 바로 실행시..

0

92

1

교육자료 소스 바로 실행시..

0

68

1

13-1, 13-2 질문

0

134

1

12-2. Recoil -> Jotai 변환 코드 공유합니다.

4

216

1

recoil error 나시는 분들 보세요

3

131

1

어려워요 뭔소리죠 대체

3

318

1

사진이 잘 안보여요.

0

159

1

반복문 사용법은 안알려주고 주의사항만 알려주시는거군요

1

248

0

hooks recoil불러오는 과정에서 src내부에 있는 파일이 안불러와집니다

0

126

1

제발 코드샌드박스 링크 좀 달아주세요....

2

538

2

App.js > QuestionBox > answers ={answers[step]}, QuestionBox.js > answer

0

141

0

4.2 React 렌더링 과정 에서 왜 컴포넌트가 두 번씩 호출될까요?

0

176

1

useEffect 관련 질문드립니다.

0

138

0

jotai로 변경했을 때 코드

0

438

3

리코일이 업데이트가 안된지 오래됐다고하네요

3

463

1

학습 링크

0

364

1

12-2 질문

0

665

3

5-1 학습링크

1

270

1

7-5. 메모 삭제 기능에 문제가 있습니다.

1

245

0

실습링크

0

326

1

2-6 구구단 배열 넣어서 출력시 질문

0

148

1

[2-1] 강의링크 메모용

4

925

1