【发布时间】:2021-01-04 06:46:47
【问题描述】:
我正在使用js-search 在我的 gatsby 网站中搜索一些博客文章。我一直在关注this tutorial here。
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 中图像的链接)?
【问题讨论】:
-
您好,我刚看到这个问题,您找到解决方案了吗?我将需要为我正在处理的项目实现类似的东西,我认为解决方案是在搜索结果中添加分页,然后在客户端延迟加载它们。如果不晚,我会努力做到的。告诉我
标签: javascript reactjs lazy-loading gatsby gatsby-image