limit : 한 페이지에 보여줄 데이터 수
offset : 데이터가 시작하는 위치(index)
url에서?
기호는 유일무이 하며 Query string의 시작을 알립니다.
parameter=value
로 필요한 파라미터의 값을 적습니다
파라미터가 여러개일 경우&
를 붙여서 여러개의 파라미터를 넘길 수 있습니다.
e?.target.dataset.idx
접근이 가능합니다.e옆의
?
는 옵셔닐체이닝으로 javascript.info 좀 더 공부를 해봐야겠다...
PaginationButtons.js
export default function Buttons({ fetchCoffee }) {
return (
<div className="pageBtn">
<button data-idx="0" onClick={fetchCoffee}>
1
</button>
<button data-idx="1" onClick={fetchCoffee}>
2
</button>
<button data-idx="2" onClick={fetchCoffee}>
3
</button>
<button data-idx="3" onClick={fetchCoffee}>
4
</button>
<button data-idx="4" onClick={fetchCoffee}>
5
</button>
</div>
);
}
CoffeeList.js
class Coffee extends Component {
state = {
coffee: [],
userInput: "",
currentIdx: 1,
};
// 데이터 로딩
componentDidMount() {
fetch("http://localhost:8000/drinks")
.then((res) => res.json())
.then((res) => this.setState({ coffee: res }));
}
fetchCoffee = (e) => {
const LIMIT = 10;
const offset = e?.target.dataset.idx;
fetch(`http://url?limit=${LIMIT}&offset=${offset * LIMIT}`)
.then((res) => res.json())
.then((res) => this.setState({coffee: res}))
};
render() {
const { coffee, currentIdx } = this.state;
const { fetchCoffee } = this;
return (
<div className="Photos">
<h1>Mini Project - Pagination</h1>
<Buttons currentIdx={currentIdx} fetchCoffee={fetchCoffee} />
<CardList coffee={coffee} />
</div>
);
}
}
export default Coffee;