inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

타입스크립트로 배우는 리액트(React.js) : 기초부터 최신 기술까지 완벽하게

게시글 댓글 렌더링

19강 게시물 수정 기능 강의 질문입니다

39

홍재훈

작성한 질문수 5

0

 

export const requireAuth = () => {
  const token = sessionStorage.getItem("access_token");
  if (!token) {
    return redirect("/auth/login");
  }
};
export const fetchPostModify = async ({ params }: LoaderFunctionArgs) => {
  try {
    const auth = requireAuth();
    if (auth) return auth;
    const { data } = await axiosInstance.get(`/posts/${params.id}`);
    return data;
  } catch (e) {
    console.error(e);
  }
};

fetchPostModify에서 requireAuth를 import 해서 reponse를 리턴해주고 있는데 여기서 어떤식으로 auth를 리턴시켜 requireAuth를 통해 redirect가 되는건지 조금 헷갈립니다

react react-router redux-toolkit zustand react.js

답변 2

0

수코딩

안녕하세요.

fetchPostModify 함수 내부에서 requireAuth() 함수를 호출해서 auth 변수에 할당합니다.

const auth = requireAuth();

만약 auth 변수에 값이 할당되어 있다면 redirect 함수가 할당됩니다.

따라서 if(auth)의 조건을 만족하면 redirect() 함수가 할당되어 있다는 뜻이고

그것을 fetchPostModify에서 반환하면 라우트 전환이 되게 됩니다.

loader에서는 직접 redirect()를 return 해줘야만 라우트 전환이 처리가 되기 때문에

위와 같이 코드를 작성한 것입니다.

이해되셨을까요?

이해가 안되시면 다시 질문해주세요!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 홍재훈님.

글을 읽어보니, fetchPostModify 함수에서 requireAuth를 사용하면서 redirect 기능이 어떻게 작동하는지 궁금하신 것 같습니다.

코드 설명:

  • requireAuth 함수는 sessionStorage에서 access_token을 가져와 이를 확인하는 방식입니다.
  • 토큰이 없을 경우 redirect("/auth/login")을 호출하여 로그인 페이지로 사용자를 리다이렉트합니다. 여기서 redirect 함수는 보통 React Router v6에서 사용하는 내장 함수로, 해당 경로로 사용자를 이동시킵니다.
  • fetchPostModify 함수는, 이 requireAuth를 호출하여 사용자가 인증된 상태인지 확인합니다. 만약 인증되지 않은 상태라면, requireAuth에서 반환된 redirect가 경로 이동을 처리하게 됩니다.
  • requireAuth 함수 내에서 이미 redirect 처리가 되어 있기 때문에, auth 변수를 통해 그 반환값(redirected URL path)이 if (auth) return auth;를 통해 처리됩니다.

추가 설명:

이는 비동기적으로 사용자 인증을 확인하고 인증이 필요한 페이지로 접근 시 로그인 페이지로 유도하는 패턴입니다. redirect 함수는 리액트 라우터의 내장 함수로, 이를 통해 페이지 이동이 가능합니다.

여기와 관련된 추가 정보를 얻고 싶으시면, 다음 링크를 참고해 보세요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

cloudinary 관련

0

42

3

useOptimistic 실전-1 useState

0

63

2

discord 초대장 갱신이 필요한거같습니다.

0

63

1

할일 관리 앱(메모이제이션)

0

79

2

Web 플랫폼 등록

0

108

2

함수 정의 기준

0

76

2

fetch는 사용되는가

0

75

2

전역상태 관리 선택 기준

0

86

2

tailwind css는 언제 사용되는가 또 다른 css와의 차이

0

154

2

카카오 web플랫폼 등록

0

149

2

컴포넌트 그리고 폴더 구조에 대해

0

59

2

152강 보는중입니다. 초시계부분이구요. 넘버가 timeout을 받을수없다는 에러가 나오고 있어요

0

42

1

폼테그 다른 태그를 하나의 상태 객체로 묶기

0

43

2

class를 className으로 전부 수정하실 때

0

42

2

JWT에 대한 개념도 학습할 수 있나요?

0

64

2

수업자료 다운로드

0

52

2

리액트 객체의 타입을 알기위하여 마우스를 올렸을 때 나오는 형식이 강의와 다른 부분 문의 드립니다.

0

65

2

useState 자동생성 하실때 누른 키보드가 궁금합니다.

0

51

1

타입스크립트 타입이 불일치하는데 에러가 안납니다.

0

75

3

default format >> prettier 이 실행이 안됩니다.

0

66

2

윈도우 사용자입니다. homebrew 윈도우 설치법은 없나요?

0

344

3

리렌더링 관련 문의

0

56

2

공부 방향에 대해서

0

62

2

form action 과 onSubmit

0

59

2