Прямо сейчас я застрял с реализацией страницы с помощью React. У меня есть все необходимые данные от JSON, но я не получил никакого результата. Вот код, я использую: первых, я выборки данных с сервера:Pagination with React.js
constructor() {
super();
this.state = {items: {}, totalPages: [], nextPage: []};
}
componentDidMount() {
let url = 'http://localhost:8000/items?json=true';
request.get(url).then((response) => {
this.setState({
items: response.body.items.data,
totalPages: response.body.items.last_page,
nextPage: response.body.items.next_page_url
});
});
}
Таким образом, я получаю простой JSON файл:
{
"items": {
"total": 26025,
"per_page": 16,
"current_page": 1,
"last_page": 1627,
"next_page_url": "http://localhost:8000/items?page=2",
"prev_page_url": null,
"from": 1,
"to": 16,
"data": [
{
"id": 1,
...
},
{
"id": 2,
...
},
...
]
}
}
Я успешно отображать items
данные в render
методе, как это:
let items = _.map(this.state.items, (item) => {
return (
<div key={item.id}>
<div className="content">
<span>
{item.type}
</span>
...
</div>
</div>
)
});
return
, а затем это так:
return (
<div>
{items}
</div>
<div>
<a href={this.state.nextPage}>Next</a>
</div>
)
Я могу видеть, что изменения URL после того, как я нажимаю Next
кнопку page2
, но есть две проблемы: Я хочу изменить items
компоненты на основе JSON файла, когда я нажимаю Next
(т.е. первая страница содержит первый набор из 16 элементов , вторая страница содержит второй набор), но никаких изменений нет, и когда я снова нажимаю кнопку Next
, но на второй странице (по URL) он не попадает на третью страницу и так далее. Я знаю, что мне нужно каким-то образом связать это состояние с page2
. URL-адрес показывает содержимое, описанное на второй странице, и я просмотрел учебники, но они, похоже, устарели, если я использую React 15.2.1
. Буду признателен за любую помощь или мысль, которая поможет мне решить ее!
Hey Galeel, благодарен за ответ! К сожалению, это не сработает после того, как я сделаю ссылку на следующую страницу, приведя к ошибке консоли «не могу прочитать свойства» «null». Похоже, что ссылка приводит меня к следующей странице, но состояние элементов не изменяется, запрос выводит, что данные в документе json равны нулю –
. Какой ответ вы получаете, когда попадаете в http: // localhost: 8000/items ? page = 2 в адресной строке.? Получают ли вы ответ JSON, подобный тому, который вы опубликовали выше? –
Прежде всего спасибо за то, что посвятили свое время, я очень ценю это! Я тестирую ответ с почтальоном, и вот что я нашел. В документе JSON я получаю next_page_url как «? Page = 2», но, как вы, вероятно, видели, что мой первый requrest сделан с параметром «? Json = true» для загрузки данных. Переход на «? Page = 2» не дает мне ничего, но когда я перехожу к «? Page = 2? Json = true», я получаю именно то, что хочу. Я связался с моим backend dev, чтобы внести изменения, но мне просто интересно, можно ли добавить «? Json = true» на следующую страницу, когда я устанавливаю состояние? –