• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

swr 질문

22.02.11 01:19 작성 조회수 164

0

안녕하세요 제로초님

좋은 강의 잘 듣고 있습니다! 질문이 있는데요

로그인 성공 시 서버로부터 받은 세션으로 사용자 정보를 swr로 받고 싶습니다.  여기서 질문이 있습니다

 

1. LogIn 컴포넌트에서 로그인을 성공하게 되면 revalidated가 불리면서 세션에 사용자 정보가 저장되는게 맞나요?

2. 제가 현재 구현하고 있는 서버가 Spring Boot + Spring Security 인데 다중 사용자이므로 email을 req param으로 전달하고 정보를 리턴받습니다. 이럴 경우에 workspace 레이아웃에서는 email 정보로 swr 요청 하는 방법을 .. 모르겠습니다ㅠ

3. 1번의 질문이 참이라면 세션의 사용자 정보를 가져다가 2번의 param으로 사용하여 swr 요청할 수 있을거 같은데 가능할까요..?

 

답변 주시면 감사하겠습니다!

답변 2

·

답변을 작성해보세요.

0

김노아님의 프로필

김노아

질문자

2022.02.12

저 알려주신대로 하다 잘 안되서 질문 드립니다

fetchByEmail() 에서 email이 안넘어가는것 같습니다 

도움 주시면 감사하겠습니다ㅠㅠ

 

김노아님의 프로필

김노아

질문자

2022.02.12

김노아님의 프로필

김노아

질문자

2022.02.12

로그인 성공 후 revalidate()가 불려 swr의 fetchByEmail까지는 요청이 가는 것 같습니다.

하지만 email값이 들어가지않는 상태입니다

김노아님의 프로필

김노아

질문자

2022.02.12

답변을 여기에 다시면 알림이 저한테 안 갑니다. 자신의 질문에 자신이 답변한 셈이 됩니다. 댓글로만 달아주세요.

email이 처음에는 ''라 그렇습니다. key를 email ? 'getUserByEmail' : null

로 바꾸세요.

0

김노아님의 프로필

김노아

질문자

2022.02.11

질문이 좀 부족한거 같아서.. 추가로 말씀드려보자면요..
제가 원하는 것은 Login시 얻은 email을 가지고 swr 요청시 해당 키값으로 swr요청하는 컴포넌트들이 캐시를 공유하기를 원하는데 다른 컴포넌트에서는 email값을 모릅니다.. 어떻게 해야할지.. 감이 안잡힙니다ㅠ

예를 들어 const {data} = useSWR('getUserByEmail', () => fetchByEmail(email)); 이런 식으로 만드셔서 여러 컴포넌트에 이걸 넣어두시면 됩니다. 그러면 한 군데서 getUserByEmail 키로 값을 가져오면 다른 곳에서는 자동으로 이 값이 들어있게 됩니다.

김노아님의 프로필

김노아

질문자

2022.02.11

아아 신기하네요..! 제가 하고싶은 구현이였어요

큰도움 받았습니다 정말 감사합니다!!