gatsby - 仅使用 Gatsby Link 更改内容
问题描述
我正在使用 GatsbyJS 来构建一个站点,但希望路由器的行为略有不同,因为它更像是 SPA 中的路由器,并且只更改已更改的内容,而不是重新加载整个页面。
例如,如果我有:
<Link to="/next-page/">Go to Next Page</Link>
这会加载整个下一页并重新渲染所有内容。包括标题、布局等。
我怎样才能做到只有内容被改变?
我注意到在 Gatsby 官方网站上就是这种行为,但实际上它似乎会加载并重新渲染整个下一页。您需要使用不同的组件吗?
例如,如果我有这三个文件:
布局.js
<div>
<header>Header</header>
<main>{children}</main>
</div>
index.js
<Layout>
<Link to="/next-page/">Go to Next Page</Link>
</Layout>
下一页.js
<Layout>
<Link to="/">Go to First Page</Link>
</Layout>
我期望标题内容不应在单击下一个链接时重新加载和呈现。因此,如果我通过 Web Inspector 更改标题的文本,我希望此文本不会更改,因为只有网页的一部分应该得到更新。您可以在 Gatsby 网站上进行测试,方法是编辑标题 HTML 的任何部分,然后四处浏览并查看标题 HTML 永远不会重新呈现……但是如何?
解决方案
这成为 Gatsby v2 中的默认行为,但我发现同样的事情:希望全局布局保持不变是很常见的。您可以使用官方gatsby-plugin-layout插件重新添加该功能。
运行以下命令:
npm install --save gatsby-plugin-layout
将插件添加到您的gatsby-config.js
插件数组中:
module.exports = {
plugins: [
// Etc…
{
resolve: `gatsby-plugin-layout`,
options: {
component: require.resolve(`./relative/path/to/layout/component`),
},
},
// Etc…
],
}
…带有布局组件的路径。
更多背景:
推荐阅读
- nswag - Nswag - 生成的客户端中不存在属性“过时”中的消息
- python - 从另一个文件导入时,Python Pygame 代码运行非常慢
- c++ - 在 [C++] 中键入 0 之前的 10 个数字的总和
- python - sklearn 已安装但无法导入
- node.js - 如何创建创建路线以在猫鼬中创建数组列表
- html - 如何在 HTML 代码中显示来自图像 URI 的图像以响应 ANDROID 的原生反应?
- c# - 如何使用 streamwriter/textwriter/File 写入文件?
- node.js - 使用 NodeJS 创建 Angular 项目的问题
- c# - 关闭按钮不使用 Paddle SDK 在 c# 中关闭整个应用程序
- html - 图像未出现 Apex Oracle