0

documentationからこれを理解できませんでした。スタイラスコンポーネントを使用してサーバーサイドをレンダリングする際にグローバルスタイルを挿入する方法

私はサーバーサイドにReactアプリケーションをレンダリングするためにいくつかのグローバルスタイルをstyled-components経由で追加しようとしていますが、これを行う方法がわかりません。ここで

は私globalStyles.jsの一部です:

import { injectGlobal } from 'styled-components'; 

export default() => injectGlobal` 
    @import url('https://fonts.googleapis.com/css?family=Pacifico'); 
    @import url('https://fonts.googleapis.com/css?family=Open+Sans:300,400'); 
    html { 
     box-sizing: border-box; 
    } 
    *, *:before, *:after { 
     box-sizing: inherit; 
    } 
`; 

は、ここに私の普遍レンダリングエクスプレス・ハンドラです:

const path = require('path'); 
const fs = require('fs'); 

const React = require('react'); 
const { renderToString } = require('react-dom/server'); 
const { StaticRouter } = require('react-router-dom'); 
const { ServerStyleSheet } = require('styled-components'); 

const { default: App } = require('../src/containers/App'); 
const baseStyles = require('../src/styles'); // How to get this in the global css 

const indexFile = fs.readFileSync(path.resolve(__dirname, '..', 'build', 'index.html'), 'utf8'); 

function universalLoader(req, res) { 
    const css = new ServerStyleSheet(); 
    const context = {}; 

    baseStyles(); 

    // Create the markup from the React application 
    const markup = renderToString(
     css.collectStyles(
      <StaticRouter context={context} location={req.url}> 
       <App /> 
      </StaticRouter> 
     ) 
    ); 

    const html = indexFile 
     .replace('{{SSR}}', markup) 
     .replace('{{CSS}}', css.getStyleTags()); 

    // Send the response back to the user 
    res.send(html); 
}; 

答えて

1

は私<App />コンポーネントrender()に(順番にinjectGlobalを呼んでいる)baseStyles()を呼び出し、判明しますメソッドが問題を修正しました。 :)

関連する問題