// 나쁜 예
"/users/1" => <Users id={1} />
"/users/2" => <Users id={2} />
"/users/3" => <Users id={3} />
// 좋은 예
"/users/:id" => <Users /> // useParams().id
Query Parameter: /about?details=true
// Query Parameter 예시
const LIMIT = 12;
export default function Users() {
const [users, setUsers] = useState([]);
const navigate = useNavigate();
const location = useLocation();
console.log(location);
// 데이터 로딩
useEffect(() => {
fetch(`http://localhost:8000/users${location.search || `?limit=${LIMIT}&offset=0`}`)
.then((res) => res.json())
.then((res) => setUsers(res.users));
}, [location.search]);
const updateOffset = (buttonIndex) => {
// const limit = 12; // 한 화면에서 그려줄 데이터 갯수
// const offset = buttonIndex * limit; // 그 데이터의 갯수의 시작점
// const queryString = `?limit=${limit}&offset=${offset}`;
const offset = buttonIndex * LIMIT; // 그 데이터의 갯수의 시작점
const queryString = `?limit=${LIMIT}&offset=${offset}`;
navigate(queryString);
}
return (
<div className="photos">
<h1>Mini Project - Pagination</h1>
<Buttons updateOffset={updateOffset} />
<CardList users={users} />
</div>
);
}