reactjs - 如何复制 gatsbyjs 过滤器和搜索,就像他们的起始页一样?
问题描述
我想建立一个搜索页面,让用户根据他们可以从选择和单选复选框中选择的某些条件查询数据,代表它生成一个查询字符串,提供用于搜索的键/值对,功能有点相似到他们的状态页面。
请检查下面的链接以了解我在寻找什么:
- https://www.gatsbyjs.org/starters/?v=2 <---- 查询字符串。
这些页面需要可共享,因此查询字符串是必不可少的,并且数据获取需要像在他们的网站上一样快。
据我所知,根据文档:
我有两个选择:
- 在构建期间获取数据
- 在运行时获取数据
对于运行时,我认为我需要使用 redux-thunk 对 ExpressJs、MongoDB REST API 进行网络调用,但我担心它可能会很慢。
对于构建时间,我确信如何从 Graphql 查询中获取数据并渲染它们。
对此的任何帮助都会很棒。谢谢
解决方案
Gatsby Starters Library在组件的这个urlToSearch
方法中解析 URL 参数PluginSearchBar
:
urlToSearch = () => {
if (this.props.location.search) { // get the params from the location prop
const match = /(\?|&)=([^&]+)/.exec(this.props.location.search)
if (match) return decodeURIComponent(match[2])
return ``
}
return ``
}
主要是,它使用 Gatsby location prop(从@reach/router
底层)从查询字符串中获取搜索关键字。
然后使用 Algolia 的react- instantsearch 库在客户端实现搜索。你可以在plugin-searchbar-body.js中找到完整的实现。
自然还有其他实现搜索的方法。Gatsby 的添加搜索文档是一个很好的灵感来源。
推荐阅读
- json - 如何使用 uint8 将 json 解组为 struct
- maven - 通过 maven 插件在 OpenLiberty 中安装默认数据源
- reactjs - 如何在打字稿和反应项目中重构一种类型的表达式
- javascript - 取消转义 JSON 数据值以断言
- sh - 返回 POSIX sh 管道内块中设置的值
- javascript - JavaScript 变量分配给什么类?
- visual-studio - 新的 .csproj 格式的 app.config 文件
- ssis - Dtexec ISSERVER 返回的不是有效的服务器包路径
- java - 我对java完全陌生,想知道是否有任何方法可以改进这个程序
- node.js - 带有“/”的欢迎页面和未找到用于休息的页面