Gatsby: [v2] рдЧреИрдЯреНрд╕рдмреА-рдкреНрд▓рдЧрдЗрди-рдЬреЗрдПрд╕рдПрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрднрд╛рд╡рд┐рдд рдмрдЧ: рд╢реАрдЯреНрд╕ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 29 рдЕрдЧре░ 2018  ┬╖  1рдЯрд┐рдкреНрдкрдгреА  ┬╖  рд╕реНрд░реЛрдд: gatsbyjs/gatsby

рд╡рд┐рд╡рд░рдг

рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рдХреБрдЫ рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЗ рд╕рд╛рде, рд╢реАрдЯреНрд╕ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЛ рд░реЗрдВрдбрд░ рдХрд┐рдП рдЧрдП рдкреГрд╖реНрдареЛрдВ рдХреЗ рдмреАрдЪ рд╕рд╛рдлрд╝ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкреНрд░рдЬрдирди рдХрд░рдиреЗ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛

рдЗрд╕ рд░реЗрдкреЛ рдореЗрдВ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдкреНрд░рдЬрдирди рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдлрд┐рдХреНрд╕ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИ:
https://github.com/cpboyd/gatsby-layout-mui-bug

рдиреЛрдЯ: рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ SheetsRegistry рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдирд╛ рдХрд╣рд╛рдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВрдиреЗ рдЗрд╕реЗ ToString() рдХреЙрд▓ рдХреЗ рдмрд╛рдж рд╣реА рд░рдЦрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдЬрдЧрд╣ рдереАред

рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рддрд┐рдкрд╛рджрди рдФрд░ рд╕реНрдерд┐рд░ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рдмреАрдЪ рдкреГрд╖реНрдареЛрдВ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдгрд╛рдо

рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЧрдбрд╝рдмрдбрд╝ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╡рд╛рддрд╛рд╡рд░рдг

рдкреНрд░рдгрд╛рд▓реА:
рдУрдПрд╕: рдореИрдХреЛрдЬрд╝ рд╣рд╛рдИ рд╕рд┐рдПрд░рд╛ 10.13.6
рд╕реАрдкреАрдпреВ: x64 рдЗрдВрдЯреЗрд▓ (рдЖрд░) рдХреЛрд░ (рдЯреАрдПрдо) i7-8750H рд╕реАрдкреАрдпреВ @ 2.20GHz
рд╢реИрд▓: 3.2.57 - /рдмрд┐рди/рдмреИрд╢
рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝:
рдиреЛрдб: 10.9.0 - /usr/рд╕реНрдерд╛рдиреАрдп/рдмрд┐рди/рдиреЛрдб
рд╕реВрдд: 1.9.4 - /usr/рд╕реНрдерд╛рдиреАрдп/рдмрд┐рди/рдпрд╛рд░реНрди
рдПрдирдкреАрдПрдо: 6.4.0 - /usr/рд▓реЛрдХрд▓/рдмрд┐рди/рдПрдирдкреАрдПрдо
рдмреНрд░рд╛рдЙрдЬрд╝рд░:
рдХреНрд░реЛрдо: 68.0.3440.106
рд╕рдлрд╛рд░реА: 11.1.2
рдПрдирдкреАрдПрдордкреИрдХреЗрдЬ:
рдЧреИрдЯреНрд╕рдмреА: ^2.0.0-rc.0 => 2.0.0-rc.0
рдЧреИрдЯреНрд╕рдмреА-рдЗрдореЗрдЬ: ^2.0.0-rc.0 => 2.0.0-rc.0
рдЧреИрдЯреНрд╕рдмреА-рдкреНрд▓рдЧрдЗрди-рдЧреВрдЧрд▓-рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕: ^2.0.0-rc.0 => 2.0.0-rc.0
рдЧреИрдЯреНрд╕рдмреА-рдкреНрд▓рдЧрдЗрди-рдЬреЗрдПрд╕рдПрд╕: ^2.0.2-рдЖрд░рд╕реА.0 => 2.0.2-рдЖрд░рд╕реА.0
рдЧреИрдЯреНрд╕рдмреА-рдкреНрд▓рдЧрдЗрди-рд▓реЗрдЖрдЙрдЯ: рдЕрдЧрд▓рд╛ => 1.0.0-рдЖрд░рд╕реА.0
рдЧреИрдЯреНрд╕рдмреА-рдкреНрд▓рдЧрдЗрди-рдореИрдирд┐рдлреЗрд╕реНрдЯ: ^2.0.2-рдЖрд░рд╕реА.0 => 2.0.2-рдЖрд░рд╕реА.0
рдЧреИрдЯреНрд╕рдмреА-рдкреНрд▓рдЧрдЗрди-рдСрдлрд╝рд▓рд╛рдЗрди: ^2.0.0-rc.0 => 2.0.0-rc.0
gatsby-plugin-react-helmet: ^3.0.0-rc.0 => 3.0.0-rc.0
рдЧреИрдЯреНрд╕рдмреА-рдкреНрд▓рдЧрдЗрди-рд╢рд╛рд░реНрдк: ^2.0.0-rc.0 => 2.0.0-rc.0
рдЧреИрдЯреНрд╕рдмреА-рдкреНрд▓рдЧрдЗрди-рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ: ^2.0.0-rc.0 => 2.0.0-rc.1
рдЧреИрдЯреНрд╕рдмреА-рдкреНрд▓рдЧрдЗрди-рдЯрд╛рдЗрдкреЛрдЧреНрд░рд╛рдлреА: ^2.2.0-rc.0 => 2.2.0-rc.0
рдЧреИрдЯреНрд╕рдмреА-рд░рд┐рдорд╛рд░реНрдХ-рдПрдХреНрд╕рдЯрд░реНрдирд▓-рд▓рд┐рдВрдХреНрд╕: ^0.0.4 => 0.0.4
gatsby-remark-images: ^2.0.1-rc.0 => 2.0.1-rc.0
gatsby-remark-responsive-iframe: ^2.0.0-rc.0 => 2.0.0-rc.0
gatsby-source-filesystem: ^2.0.1-rc.0 => 2.0.1-rc.0
рдЧреИрдЯреНрд╕рдмреА-рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░-рдЬреЗрд╕рди: ^2.1.1-rc.0 => 2.1.1-rc.0
рдЧреИрдЯреНрд╕рдмреА-рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░-рдЯрд┐рдкреНрдкрдгреА: ^2.1.1-rc.0 => 2.1.1-rc.0
рдЧреИрдЯреНрд╕рдмреА-рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░-рд╢рд╛рд░реНрдк: ^2.1.1-rc.0 => 2.1.1-rc.0
рдПрдирдкреАрдПрдо рдЧреНрд▓реЛрдмрд▓ рдкреИрдХреЗрдЬ:
рдЧреИрдЯреНрд╕рдмреА-рдХреНрд▓реА: 1.1.58

рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реА (рдпрджрд┐ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ)

gatsby-config.js : рд▓рд╛рдЧреВ рдирд╣реАрдВ
package.json : рд▓рд╛рдЧреВ рдирд╣реАрдВ
gatsby-node.js : рд▓рд╛рдЧреВ рдирд╣реАрдВ
gatsby-browser.js : рд▓рд╛рдЧреВ рдирд╣реАрдВ

рдореВрд▓ gatsby-ssr.js API рд╣рд░ рдмрд╛рд░ рдкреЗрдЬ рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдкрд░ рдПрдХ рдирдП SheetsRegistry рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдЖ:

exports.replaceRenderer = (
  { bodyComponent, replaceBodyHTMLString, setHeadComponents },
  { theme = {} }
) => {
  const sheets = new SheetsRegistry()

  const bodyHTML = renderToString(
    <JssProvider registry={sheets}>
      <ThemeProvider theme={theme}>{bodyComponent}</ThemeProvider>
    </JssProvider>
  )

  replaceBodyHTMLString(bodyHTML)
  setHeadComponents([
    <style
      type="text/css"
      id="server-side-jss"
      key="server-side-jss"
      dangerouslySetInnerHTML={{ __html: sheets.toString() }}
    />,
  ])
}

рдЕрдм рд╡реЗрд░рд┐рдПрдмрд▓ рдлрд╛рдЗрд▓ рд╕реНрдХреЛрдкреНрдб рд╣реИ рдФрд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдмрдиреА рд░рд╣рддреА рд╣реИ:

import React from "react"
import { JssProvider, SheetsRegistry, ThemeProvider } from "react-jss"

const sheets = new SheetsRegistry()

// eslint-disable-next-line react/prop-types,react/display-name
exports.wrapRootElement = ({ element }, { theme = {} }) => (
  <JssProvider registry={sheets}>
    <ThemeProvider theme={theme}>{element}</ThemeProvider>
  </JssProvider>
)

exports.onRenderBody = ({ setHeadComponents }) => {
  setHeadComponents([
    <style
      type="text/css"
      id="server-side-jss"
      key="server-side-jss"
      dangerouslySetInnerHTML={{ __html: sheets.toString() }}
    />,
  ])

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЖрдк рдареАрдХ рдХрд╣ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ setHeadComponents рд╕реЗ wrapRootElement рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рддрд╛рдХрд┐ SheetsRegistry рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рд╕реНрдХреЛрдк рдХреЗ рдЕрдВрджрд░ рд╣реА рд░рд╣ рд╕рдХреЗред рдЕрдиреНрдпрдерд╛ рд╣рдореЗрдВ рд╢рдмреНрджрдХреЛрд╢ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА () рдПрдХрд▓ рд╡реИрд╢реНрд╡рд┐рдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЗ рдмрдЬрд╛рдпред

>рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЖрдк рдареАрдХ рдХрд╣ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ setHeadComponents рд╕реЗ wrapRootElement рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рддрд╛рдХрд┐ SheetsRegistry рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рд╕реНрдХреЛрдк рдХреЗ рдЕрдВрджрд░ рд╣реА рд░рд╣ рд╕рдХреЗред рдЕрдиреНрдпрдерд╛ рд╣рдореЗрдВ рд╢рдмреНрджрдХреЛрд╢ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА () рдПрдХрд▓ рд╡реИрд╢реНрд╡рд┐рдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЗ рдмрдЬрд╛рдпред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

dustinhorton picture dustinhorton  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

3CordGuy picture 3CordGuy  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

benstr picture benstr  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

brandonmp picture brandonmp  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dustinhorton picture dustinhorton  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ