Возможно, это не самый чистый ответ, но он работает, не отображая весь dataList и создавая массив элементов на основе значения numberOfItemsToDisplay:
const [numberOfItemsToDisplay, setNumberOFItemsToDisplay] = useState(itemsPerPage);
const [hasMore, setHasMore] = useState(true);
const list = [];
for (let i = 0; i < numberOfItemsToDisplay; i += 1) {
list.push(dataList[i]);
}
const loadItems = () => {
let items = list.length;
if (list.length >= dataList.length) {
setHasMore(false);
return;
}
setNumberOFItemsToDisplay((items += itemsPerPage));
};