React
React 12-3 Router v6 (Outlet, useOutletContext, 공식 문서 사이트)
와라리요
2023. 3. 21. 20:30
Outlet
- 자식 컴퍼넌트를 부모 컨퍼넌트에 붙여서 보여주고 싶을 때 사용한다. Router에 children key를 선언하고 value를 배열로 선언한 후 v6선언했던 것과 동일하게 한다.
예)
// Router.tsx
path: "user/:userId",
element: <User />,
children: [
{
path: "followers",
element: <Followers />,
}
]
// User.tsx
import { Outlet, useParams, Link } from "react-router-dom";
function User() {
const { userId } = useParams();
return(
<div>
<h1>{users[Number(userId)-1].name}</h1>
<hr />
<Link to="followers">See followers</Link>
<Outlet />
</div>
);
}
export default User;
useOutletContext
- Outlet를 선언한 JSX 속성으로 context={}를 선언하면 원하는 값을 모든 자식 컨퍼넌트로 넘겨줄 수 있다. 그것을 useOutletContext 커스텀 hook을 활용하면 바로 가지고 올 수 있다.
예)
// user.tsx의 return 안에
<Link to="followers">See followers</Link>
<Outlet context={{
nameOfMyUser: users[Number(userId)-1].name,
}} />
// Followers.tsx
import { useOutletContext } from "react-router-dom";
function Followers() {
const { nameOfMyUser } = useOutletContext();
return (
<div>
<h1>여기는 '{nameOfMyUser}'</h1>
</div>
);
}
export default Followers;
// {nameOfMyUser} -> users[Number(userId)-1].name 값이 들어간다.
공식 문서 사이트
- 더 많은 내용을 알고 싶다면 링크를 클릭한 후 확인해 보세요