显然,这不是一件容易的事,因为默认情况下模板文件中唯一更改的html.js
是头部元标记和内容。
元标记由 Helmet 组件 ( {head.title.toComponent()}
and {head.meta.toComponent()}
) 处理,模板内的 HTML 更改由 React 管理。( <div id="react-mount" dangerouslySetInnerHTML={{ __html: this.props.body }} />
)
然而,body 标签超出了 React 的范围,这就是为什么当我从一个页面导航到另一个页面时,我无法弄清楚如何即时更改它。这正是我所需要的,因为我想为每个页面应用不同的正文背景。
我知道我可以通过使用exports.onRouteUpdate
in来解决这个问题gatsby-browser.js
,但是即使浏览器中禁用了 JS,我也希望该类存在。意味着即使我在没有bundle.js
文件的情况下导出它,我也希望它在那里,只生成静态站点 HTML。