#javascript #reactjs #lazy-loading #gatsby #gatsby-image
#javascript #reactjs #отложенная загрузка #gatsby #gatsby-изображение
Вопрос:
Я использую js-search
для поиска по некоторым сообщениям в блоге на моем сайте gatsby. Я следовал этому руководству здесь.
const path = require("path")
const axios = require("axios")
exports.createPages = ({ actions }) => {
const { createPage } = actions
return new Promise((resolve, reject) => {
axios
.get("https://bvaughn.github.io/js-search/books.json")
.then(result => {
const { data } = result
/**
* creates a dynamic page with the data received
* injects the data into the context object alongside with some options
* to configure js-search
*/
createPage({
path: "/search",
component: path.resolve(`./src/templates/ClientSearchTemplate.js`),
context: {
bookData: {
allBooks: data.books,
options: {
indexStrategy: "Prefix match",
searchSanitizer: "Lower Case",
TitleIndex: true,
AuthorIndex: true,
SearchByTerm: true,
},
},
},
})
resolve()
})
.catch(err => {
console.log("====================================")
console.log(`error creating Page:${err}`)
console.log("====================================")
reject(new Error(`error on page creation:n${err}`))
})
})
}
Теперь, если я получу очень большой набор данных из этого запроса axios, на странице будет показано много-много записей в блоге. Есть ли способ настроить отложенную загрузку здесь для этих сообщений в блоге, сохраняя при этом возможность поиска по всем из них через gatsby? Или, по крайней мере, просто отложенная загрузка изображений, которые я получаю обратно (я верну ссылку на изображение в JSON)?
Комментарии:
1. Привет, я просто вижу этот вопрос, вы нашли какое-либо решение? Мне нужно будет реализовать что-то подобное для проекта, над которым я работаю, я думаю, что решение заключается в добавлении разбивки на страницы в результатах поиска, а затем отложенной загрузке их на стороне клиента. Если еще не поздно, я постараюсь это сделать. дайте мне знать
Ответ №1:
Я думаю, что лучший способ решить вашу проблему — сделать это программно. У вас есть все книги через props внутри вашего компонента ClientSearchTemplate. Просто напишите логику с состоянием внутри, запомните страницу и количество элементов на странице, нарежьте несколько книг при переходе со страницы на страницу.
Комментарии:
1. Имело бы смысл отвечать как комментарий, а не как полное решение.