reactjs - 具有单个 JSON 文件的 Gatsby createPages 不会刷新数据更改
问题描述
我正在尝试使用 Gatsby 从单个 JSON 文件动态创建页面,而不使用 GraphQL。
该works.json
文件如下所示:
[
{
"title": "Client Name",
"slug": "client-name",
"abstract": "some description in here",
"src": "img01",
...
},
{
"title": "Client Name 2",
"slug": "client-name-2",
"abstract": "some description in here",
"src": "img02",
...
},
...
]
然后我像这样创建了正确的操作gatsby-node.js
:
exports.createPages = ({ actions: { createPage } }) => {
const projects = require("./src/data/works.json")
projects.forEach(project => {
createPage({
path: `/project/${project.id}`,
component: require.resolve("./src/templates/project.js"),
context: project,
})
})
}
一切运行良好,所有数据都根据我设计模板的方式显示,除非我更改任何字符串works.json
,显示页面上没有任何变化。
要查看我必须杀死的更改gatsby development server
,清除.cache
withgatsby clean
并重新启动gatsby develop
。
有什么我做错了吗?对我来说似乎很奇怪,createPages
因为 Gatsby 检测到更改并自行刷新,所以当数据更改时无法动态工作......
我在用着gatsby: 2.25.3
解决方案
Gatsby 将在您使用 GraphQL 时刷新更改,因为它可以跟踪您所做的更改。这是 Gatsby 的预期用途,很少有理由不使用 GraphQL。
通过您project
的context
用户将下载project
页面访问中的所有数据,即使您可能只使用其中的一部分。
您可以在此处阅读有关缺点的更多信息:https ://www.gatsbyjs.com/docs/creating-and-modifying-pages#trade-offs-of-querying-for-all-fields-in-the-context-object -of-gatsby-nodejs
推荐阅读
- ios - SwiftUI 中是否有 .onReappear 等价物
- spring-boot - 如何在 Spring Boot 中的日期间隔内查找?
- elasticsearch - 即使特定字段值不可用也返回字段
- node.js - Multer 和 express-validator 在验证中产生问题
- php - 如何从 PHP 网站向 iOS 和 Android 发送推送通知?
- amazon-emr - EMR:作业流程中的所有从站都因 Spot 而终止
- reactjs - React 调用动态状态名称
- firebase - 如何在颤振中使用 .currentUser 方法
- javascript - 检测 Express 中的会话丢失?
- oracle - 立即执行期间的报价问题