React 애플리케이션을 개발하면서 페이지 간에 데이터를 전달해야 하는 상황이 빈번하게 발생했습니다.
특히, Link
컴포넌트를 사용하여 다른 페이지로 이동할 때 특정 데이터를 전달하고자 했지만,
Link
의 state
속성을 활용하는 방법을 몰라 매번 전역 상태로 처리하곤 했었습니다.
문제를 해결하기 위해 React Router의 Link
컴포넌트가 제공하는 state
속성을 활용하여 페이지 간에 데이터를 직접 전달할 수 있다는 사실을 학습하고 적용했습니다. 다음과 같은 단계를 통해 이를 구현하였습니다:
React Router의 state
속성 이해 및 활용:
Link
컴포넌트의 to
prop을 객체 형태로 작성하여 pathname
과 state
를 함께 전달할 수 있다는 점을 파악했습니다.state
를 사용하여 데이터를 전달할 수 있음을 확인했습니다.데이터 전달 구현:
Link
컴포넌트를 수정하여 필요한 데이터를 state
로 전달하도록 변경했습니다.useLocation
훅을 통해 접근할 수 있도록 설정했습니다.예시 코드:
리스트 페이지 (ListPage.tsx
)
import { Link } from 'react-router-dom';
const ListPage = ({ todos }) => {
return (
<div>
{todos.map((todo) => (
<div key={todo.id}>
<h3>{todo.title}</h3>
<Link
to={{
pathname: `/detail/${todo.id}`,
state: { todo }
}}
>
상세보기
</Link>
</div>
))}
</div>
);
};
export default ListPage;
상세 페이지 (DetailPage.tsx
)
import { useLocation } from 'react-router-dom';
const DetailPage = () => {
const location = useLocation();
const { todo } = location.state;
return (
<div>
<h2>{todo.title}</h2>
<p>{todo.body}</p>
<p>완료 여부: {todo.isDone ? '완료' : '진행 중'}</p>
</div>
);
};
export default DetailPage;
전역 상태 관리 제거:
Link
의 state
속성으로 대체함으로써, 불필요한 전역 상태 관리 로직을 제거했습니다.Link
의 state
속성을 활용한 후 다음과 같은 개선 효과를 얻었습니다:
Link
의 state
속성 활용: React Router의 Link
컴포넌트가 제공하는 state
속성을 통해 페이지 간에 데이터를 손쉽게 전달할 수 있다는 점을 배웠습니다. 이는 전역 상태 관리 라이브러리를 도입하지 않고도 간단한 데이터 전달을 가능하게 하여 코드의 복잡성을 줄이는 데 큰 도움이 되었습니다.