firebase와 연계해서 프로젝트를 진행하던 중, 로그인이후 Main page로 이동시킬 때 로그인된 user의 uid를 같이 보내야했다. 이를 어떻게 할 수 있을까?
UseNavigate
react router에서 지원하는 Hook. 지정한 경로로 페이지를 이동시킬 수 있다. 근데 두 번째 인자로 이동시킬 페이지에 함께 보낼 데이터를 지정할 수 있다! 예시는 다음과 같다.
import { useNavigate } from 'react-router-dom';
// ...생략
const navigate = useNavigate();
// ...생략
const gotoMain = () => {
navigate("/main", {
state: {
userId: user.uid
}
});
};
참고로 이렇게 데이터를 보낼 때는 두 번째 인자의 state라는 속성으로 보내야 한다고 함.
UseLocation
react router에서 지원하는 Hook. useNavigate를 이용해 전송된 데이터를 받을 수 있다. 예시는 다음과 같다.
import { useLocation } from 'react-router-dom';
// ...생략
const location = useLocation();
// ...생략
const [userId, setUserId] = useState(
location.state?.userId
);
location의 state프로퍼티에 내가 보낸 데이터들이 담겨있다고 보면 된다.
참고로, Link태그를 통해서도 데이터를 보낼 수 있다고 한다. 예시는 다음과 같다.
<Link to={`/main`} state={{ test: "hello world" }} >
test
</Link>
또한 참고로, useNavigate의 두 번째 인자로는 state가 아니라 replace라는 것도 보낼 수 있다.
import { useNavigate } from 'react-router-dom';
// ...생략
const navigate = useNavigate();
// ...생략
const gotoMain = () => {
navigate("/main", {replace: true});
};
기본값은 false이고, true로 돼있으면 페이지가 이동된 뒤 뒤로가기를 하더라도 방금 페이지로 돌아올 수 없고, 루트로 돌아오게 된다고 한다. false는 뒤로가기가 가능.
'WEB > REACT & NEXT' 카테고리의 다른 글
[Recoil] Recoil을 쓰는 이유, 사용법 (1) (0) | 2023.04.01 |
---|---|
[React.js] Ref는 뭐고 왜 쓰는 걸까 (0) | 2022.07.27 |
[React.js] 리액트에서 입력 폼 다루기(input태그들) - 1편 (0) | 2022.07.25 |
[짧][React.js] 렌더링이 2번 되는 현상 (0) | 2022.07.25 |
[React.js] useEffect 정리 (0) | 2022.07.13 |