⛵ 항해99/TIL · WIL ✏️

[TIL] 2023.10.07 - useLocation() : 페이지 이동 시 데이터 전달

hhhhy 2023. 10. 10. 09:53

 state로 데이터 보내기 

// 회원가입 페이지

// POST : 회원가입 하기
  const navigate = useNavigate();

  const onClickSignUpCompleteHandler = async () => {
    // 에러메시지 있는지 확인
    if (
      emailMessage !== true ||
      passwordMessage !== true ||
      checkPassWordMessage !== true
    ) {
      alert("필수 정보를 올바르게 입력하세요.");
      return;
    } else if (emailAuthCompleted !== true) {
      alert("이메일 인증이 필요합니다.");
      return;
    }

    try {
      const response = await axiosInstance.post("/api/users/signup", {
        nickName: nickName || null, //닉네임이 비어있으면 null로 보내기
        email,
        password,
        profileImg: null,
      });
      console.log("response", response);

      if (response.data.statusCode === 201) {
        alert(response.data.msg);
        navigate("/signup/complete", { state: { nickName } });
        // 웰컴페이지로 닉네임 보내기!
        // state는 현재 주소와 관련된 상태 정보를 가지고 있으며, 일반적으로 라우팅에 필요한 데이터를 전달하기 위해 사용
      }
    } catch (error) {
      console.log("error", error);
      alert(error.response.data.msg);
    }
  };

 

 useLocation로 데이터 받기 

//웰컴 페이지

export default function SignUpCompletePage() {

  // useLocation : 회원가입 페이지에서 닉네임 받아오기!
  const { state } = useLocation(); // useLocation() 함수에서 반환된 객체에서 구조 분해 할당을 사용하여 state 변수를 추출
  const nickName = state.nickName; // state 객체에서 nickName 속성을 변수 nickName에 할당
  console.log({ state });

  return (
    <Layout>
      <div className="mb-3 text-lg font-bold">
        {nickName ? nickName : "익명"} 님
        {/* nickName이 없으면 익명 으로 표시 */}
      </div>
    </Layout>
  );
}

 

 참고 

 

[React][1분만에 해결] react navigate param

안녕하세요, 송아지할때 송아 김송아입니다. React-Spring 프로젝트 많이들 하실텐데요~! 쉽게 답을 찾지 못 했던 바로 React navigate param 즉, 리액트 navigate(다른, 다음 페이지로 이동)하면서 param(파라

songacoding.tistory.com

 

[React] 페이지 이동할 때, 데이터 전달하기

useNavagate 와 useLocation 훅을 이용하여 페이지 이동과 데이터 전달하기

velog.io