【问题标题】:How To Set State Above Pages In Gatsby如何在 Gatsby 中设置页面上方的状态
【发布时间】:2019-08-23 13:38:12
【问题描述】:

考虑到Gatsby在组件文件添加到文件夹时会自动创建页面,我如何在页面上方创建一个高阶状态组件,以便我可以控制导航和其他通用通用组件的状态?

或者我们是否要在页面组件中创建单独的状态,即使这意味着重复?

谢谢

【问题讨论】:

  • 你能做出这样的布局组件吗? github.com/gatsbyjs/gatsby/issues/10415
  • 感谢分享,这是我目前正在做的,但不满意。我宁愿在页面上方有一个共享状态,而不是像提问者那样重复布局。

标签: reactjs react-router gatsby


【解决方案1】:

您可以在gatsby-browser.jsgatsby-ssr.js 中使用wrapPageElementwrapRootElement api 来实现此目的。

  • wrapPageElement 用于持久 UI 组件,即在页面更改期间不应卸载的组件。例如 gatsby 自己的layout plugin 使用这个 api 将整个页面内容包装在一个用户定义的 Layout 组件中(这曾经是 gatsby 1 中的默认行为)。

  • wrapRootElement 用于数据提供者。比如你想use redux或者styled-component主题,你可以用这个api封装他们的Provider组件。

gatsby-browser.js 将仅在浏览器中运行,而gatsby-ssr.js 将在页面生成期间运行,因此您可能希望同时使用这两个 api。

【讨论】:

  • wrapPageElement 听起来确实是我需要的。将实施并反馈反馈和/或任何问题。感谢德里克的指导。
猜你喜欢
  • 2019-02-21
  • 1970-01-01
  • 2020-11-12
  • 1970-01-01
  • 1970-01-01
  • 2019-02-28
  • 2022-01-16
  • 2020-05-09
  • 2020-01-20
相关资源
最近更新 更多