Я работаю с Cloud Firestore и в данный момент я бы хотел разбить на страницы все доступные записи. У меня есть список ресторанов, и я использую компонент React-native-snap-carousel
для просмотра каждого ресторана, полученного из БД. В настоящее время я выбираю все рестораны одновременно, и мы все знаем, что это не очень хорошая вещь, мне нужно разбить на страницы. Мне нужно выбирать 3 ресторана за раз, поэтому каждый раз, когда пользователь смахивает карусель, мне нужно получать 3 следующих ресторана.
Это код, который я пытаюсь реализовать, но он выдает эту ошибку
"Слишком много аргументов для startAt (). Количество аргументов должно быть меньше или равноколичество выражений orderBy (). "
this.state = {
loading: false,
city: '',
All: [],
itemsPerPage: 3
};
componentDidMount() {
this.getRestaurants();
}
componentDidUpdate(prevProps, prevState) {
const isDifferentPage = this.state.All !== prevState.All
if (isDifferentPage) this.getRestaurants()
}
getRestaurants = () => {
const {All, itemsPerPage} = this.state;
const startAt = All * itemsPerPage - itemsPerPage;
const ref = firebase.firestore().collection('restaurants').startAt(startAt).limit(itemsPerPage);
ref.onSnapshot((querySnapshot => {
const data = querySnapshot.docs.map(doc => doc.data());
var newArr = [];
var newDataArray = [];
for (i = 0; i < data.length; i++) {
newArr.push(data[i]);
this.setState({
All: newArr
})
}
}))
}
Подробнее:
данные в Firestore являются динамическими, и они будут обновлять всевремя, поэтому мне нужно, чтобы пользователь видел последние «рестораны» впереди, а при прокрутке (смахивании) мне нужно выбрать для ex. Еще 3 после 3 других, которые уже отображаются.