如何在 React 服务器端渲染器应用程序上使用样式表?

How to use Stylesheets on React Server Side Rendererd App?

提问人:pureofpure 提问时间:8/18/2017 最后编辑:Sal Rahmanpureofpure 更新时间:8/18/2017 访问量:472

问:

我正在尝试将我的 ReactJS 应用程序转换为具有服务器端渲染的通用应用程序,但有些东西我不明白。使用样式并将其导入组件的最佳方式是什么?我可以只在 HTML 中导入外部样式表并在我的组件中使用它吗?或者将特定的样式表导入到每个组件中,并将其用作单独的变量,如下所示:

import s from './about.css';

export default class About extends Component {
  render() {
    return (
      <div>
        <div className={`${s.divone} row`}>
          <span>Hello world</span>
        </div>
        <div className={s.divtwo}>
          <span>bye world</span>
        </div>
      </div>
    );
  }
}

使用第二种方法,我注意到每次刷新页面时,样式加载速度都太慢了,有一秒钟我看到我的页面没有任何 CSS,然后我看到我的整个页面带有 CSS。有什么方法可以在没有外部和全局样式表的情况下绕过它吗?例如,Airbnb就是这样。也许有某种方法可以等到加载所有样式?

此外,在我将应用程序移动到服务器端渲染后,我收到一些奇怪的警告,如下所示:

enter image description here

css reactjs sass 服务器端 react-universal

评论

0赞 Gaurav Paliwal 8/18/2017
你熟悉吗?bundlerwebpack
0赞 pureofpure 8/18/2017
Gaurav Paliwal,是的,我对 webback 很熟悉,但您的答案/问题既不能解决我的问题,也不能回答我的问题。

答:

0赞 Umesh 8/18/2017 #1

你可以使用 classnames,一个简单而小的 JS 库来导入和使用 css 在你的 react 组件中:

import styles from './css/yourcss.css'
import classnames from 'classnames/bind'

const cx = classnames.bind(styles)

// use in react component
<div className={cx('mydiv')}></div>

cx 内部可以包含任何 JS 表达式,也可以只是从您导入样式的 css 中的纯类名。

评论

0赞 pureofpure 8/18/2017
我已经尝试过,但我仍然遇到页面重新加载的问题。