【发布时间】:2016-04-09 12:38:08
【问题描述】:
目前对带有 React 组件的 CSS 的做法似乎是使用 webpack 的 style-loader 将其加载到页面中。
import React, { Component } from 'react';
import style from './style.css';
class MyComponent extends Component {
render(){
return (
<div className={style.demo}>Hello world!</div>
);
}
}
通过这样做,样式加载器会将<style> 元素注入到 DOM 中。但是,<style> 不会在虚拟 DOM 中,因此如果进行服务器端渲染,<style> 将被省略。这会导致页面有FOUC。
有没有其他方法可以加载CSS modules 在服务器端和客户端都可以使用?
【问题讨论】:
-
你可以试试这个 postcss 插件:github.com/ctxhou/postcss-hash-classname。我发现样式加载器仅限于 webpack,所以使用这个插件,您可以将 css 类名提取为 js 对象文件。然后你可以要求这个
style.js并使用相同的代码。因为这是.js文件,当然可以支持服务端渲染。您可以查看 repo 以了解更多信息:) -
我要解决的问题是让 webpack 将 CSS 注入到虚拟 DOM 中,这样服务器端渲染也包含 CSS。我不认为有人与此任务相关?
-
你的意思是你不想再创建一个css文件,只想让webpack帮你注入?
标签: reactjs webpack webpack-style-loader