Реакция эмоции не работает во время рендеринга на стороне сервера - PullRequest
0 голосов
/ 25 октября 2019

Я перехожу с React Emotion 9 на Emotion 10, следуя этому руководству. https://emotion.sh/docs/migrating-to-emotion-10

По умолчанию должно быть включено SSR, однако, похоже, оно не работает с тематикой эмоций, потому что я неt не имеет доступа к «props.theme» в стилизованных компонентах. Однако стилизованные компоненты работают, как и ожидалось, на эмоциональной стороне клиента.

Каковы возможные причины?

Используется стандартный код

const App = (theme) => (
    <ThemeProvider theme={theme}>
        ...
    </ThemeProvider>
);
const app = <App theme={theme} />
const html = renderToString(app);

Некоторыежурналы ошибок:

at handleInterpolation (webpack:///./node_modules/@emotion/serialize/dist/serialize.esm.js?:143:24)
    at serializeStyles (webpack:///./node_modules/@emotion/serialize/dist/serialize.esm.js?:253:15)
    at Object.eval [as children] (webpack:///./node_modules/@emotion/styled-base/dist/styled-base.esm.js?:114:100)
    at ReactDOMServerRenderer.render (/www/sites/base_web/node_modules/react-dom/cjs/react-dom-server.node.development.js:3412:55)
    at ReactDOMServerRenderer.read (/www/sites/base_web/node_modules/react-dom/cjs/react-dom-server.node.development.js:3161:29)
    at renderToString (/www/sites/base_web/node_modules/react-dom/cjs/react-dom-server.node.development.js:3646:27)

1 Ответ

0 голосов
/ 25 октября 2019
  import { renderToString } from 'react-dom/server'
  import { renderStylesToString } from 'emotion-server'
  import App from './App'

  const html = renderStylesToString(renderToString(<App />))

это работает?

...