Гэтсби с Material-UI: зачем создаватьPageContext? - PullRequest
0 голосов
/ 13 февраля 2019

Я просматривал пример Гэтсби на странице проекта material-ui на github и надеялся объяснить несколько строк кода.

В файле getPageContext.js

export default function getPageContext() {
  // Make sure to create a new context for every server-side request so that data
  // isn't shared between connections (which would be bad).
  if (!process.browser) {
    return createPageContext();
}

Почему данные будут передаваться между подключениями?

Я ожидаюпредупреждение об этом поведении где-то в документации Material-UI, но его нигде нет.Это кажется настолько важным, что я удивляюсь, почему он скрыт в примере кода.

Этот вопрос , похоже, связан, однако связанная проблема github + обсуждение не помогает мне понять, почему это так.Временное решение с контекстом страницы.

Спасибо!

1 Ответ

0 голосов
/ 13 февраля 2019

PageContext, как показано в примере, реализован так, чтобы иметь правильный порядок внедрения CSS, как указано ниже здесь :

CSS, введенный Material-UI для стилизации компонента, имеетНаивысшая возможная специфичность при вводе в нижней части для обеспечения правильной визуализации компонентов.

Важный бит находится в withRoot.js :

  return (
    <JssProvider generateClassName={this.muiPageContext.generateClassName}>
      {/* MuiThemeProvider makes the theme available down the React
          tree thanks to React context. */}
      <MuiThemeProvider
        theme={this.muiPageContext.theme}
        sheetsManager={this.muiPageContext.sheetsManager}
      >
        {/* CssBaseline kickstart an elegant, consistent, and simple baseline to build upon. */}
        <CssBaseline />
        <Component {...this.props} />
      </MuiThemeProvider>
    </JssProvider>
    );

Этот поток дает представление о том, что происходит, если вы не работаете с pageContext.

...