首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gatsby -改变了初始HTML

Gatsby -改变了初始HTML
EN

Stack Overflow用户
提问于 2020-04-04 22:37:16
回答 2查看 739关注 0票数 2

我正在用了不起的盖茨比框架(版本2.16.1)构建登陆页面。

除了我无法找到在加载任何脚本之前对正在加载的HTML进行更改的方法(“过度折叠”初始HTML),一切都会完美地工作。

例如,如果我在盖茨比( Gatsby )中更改HTML的背景色,用户可以在“过度折叠”初始HTML显示后最多等待5秒,直到应用背景颜色。

我知道gatsby-browser.js和制作全球CSS文件的能力,但这对我来说毫无用处,因为我对每个登陆页面都使用不同的颜色或背景图片。

我的问题是:我是否可以影响盖茨比中的第一个加载的HTML (每个Gatsby页面不同)或反应?

说明:我把背景颜色涂成黄色,但流程是这样的-

代码语言:javascript
复制
HTML is first displayed (background=while) -->
3-5 seconds later -->
all scripts are loaded, and background changes to yellow
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-05 22:20:52

@ksav在对问题的评论中回答了这个问题!谢谢!

答案是在onRenderBody文件下使用一个名为gatsby-ssr.js的函数,如本文中提到的:https://www.gatsbyjs.org/docs/custom-html/

代码语言:javascript
复制
exports.onRenderBody = ({setBodyAttributes,pathname,}) => {
  // Differentiate between the landing pages here
  switch(pathname) {
    case 'landing_page_a':
    case 'landing_page_b':
  }

  // Affect the HTML that gets loaded before React here
  setBodyAttributes({
    style: {
      backgroundColor: 'red',
    },
  });
}

有趣的是,我之前已经碰到过这篇文章,但我认为它并不相关,因为它谈到了服务器端呈现,而且我知道盖茨比没有服务器。在@ksav的评论之后,我重新阅读了它,并理解服务器端呈现是在Gatsby的构建过程中发生的,而不是在运行时(即当用户进入登陆页面时)。

票数 2
EN

Stack Overflow用户

发布于 2020-04-05 18:04:16

我是否可以影响盖茨比中的第一个加载的HTML (每个盖茨比页面不同)或反应?

是的,您可以直接在JSX中反应代码。谷歌有文档如何优化CSS的交付,所以你上面的内容总是正确的样式。它归结为使用内联CSS为您的所有组件以上折叠。使用内联CSS,HTML元素在加载时总是样式化,因为样式是HTML代码的一部分。

有关如何在React中处理内联样式,请参见React 文档

Gatsby教程的一个示例:

代码语言:javascript
复制
src/pages/index.js

import React from "react"
export default () => (

  {/* inline CSS */}
  <div style={{ margin: `3rem auto`, maxWidth: 600 }}> 

    <h1>Hi! I'm building a fake Gatsby site as part of a tutorial!</h1>
  </div>
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61035675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档