我正在尝试使用renderToStaticMarkup方法从react生成静态html。我现在面临的问题是我无法将css导入到react组件中。我想在我的React组件中导入css,如css-模块(从'./style.css'导入样式)。然后将加载的css注入到生成的静态html头中。我该如何完成?
我不能使用webpack由于一些限制。如果有任何Babel插件可用于此特定情况下,然后请让我知道。
下面是我如何从react组件生成静态html:
const reactElement = require('react').createElement;
const ReactDomServer = require('react-dom/server');
const renderHTML = Component => {
return ReactDomServer.renderToString(reactElement(Component))
}
3条答案
按热度按时间7gcisfzg1#
你可以传递一个URL作为一个 prop ,并呈现一个
<link/>
标签。在这里做了一个example,不确定这是否符合你的需要,或者你是否需要它作为一个样式标签。km0tfn4u2#
如果没有大量的自定义逻辑,这可能会很有挑战性。
如果您只想为初始呈现内联CSS,然后在初始呈现后获取其余部分,
styled-components
可能是一个更好的选择,因为它完全支持您试图实现的功能,而无需过多配置:https://www.styled-components.com/docs/advanced#server-side-renderingklr1opcd3#
也许我来晚了,你也可以这样创造它。
因为
createElement
有3个参数,最后一个是children,我们可以把我们的vanila css作为children放在里面。你可以把任何导入的文件以字符串的形式放进去,它会转换成style标签