【问题标题】:React is rendering FontAwesome Styles to pageReact 正在将 FontAwesome 样式渲染到页面
【发布时间】:2018-10-25 15:39:11
【问题描述】:

我能够将各种 FontAwesome 图标渲染到我的 React 应用程序,但同时 - 在我的页面顶部,它还渲染了 FontAwesome 附带的原始 css 样式。如果我检查我的页面 - 我在那里看到一个 type=css 的样式元素。我相信我正在处理我的 webpack 中的 CSS 文件:

  {
    test: /\.css$/,  
    include: /node_modules/,  
    loaders: ['style-loader', 'css-loader'],
  },

不知道为什么会这样。

【问题讨论】:

  • 你是如何导入 FontAwesome 的?可以发index.html吗?
  • @ChaseDeAnda 我正在通过 NPM 模块导入 FontAwesome - 然后将它们要求到我的 React 组件中。 import FontAwesomeIcon from '@fortawesome/react-fontawesome';

标签: reactjs font-awesome


【解决方案1】:

如果您使用Font Awesome 5 SVG with JS,那么默认情况下,Font Awesome 将在第一次呈现图标时自动添加其 CSS,除非您在配置中将 autoAddCss 设置为 false。您可以在此处查看有关setting the config options 的更多信息。要禁用它,您可以添加一个 <script> 块来设置配置加载 Font Awesome js 之前,如下所示:

<script type="text/javascript">
  window.FontAwesomeConfig = { autoAddCss: false }
</script>

或者,像这样在加载 FontAwesome 的 JavaScript 模块中——之前 FontAwesome 尝试渲染第一个图标:

import fontawesome from "@fortawesome/fontawesome";
fontawesome.config = { autoAddCss: false };

更新:从 Font Awesome 5.0.x 开始,上述示例是 当前 的方法。随着 5.1 的发布,我们将采用不同的方式来实现这一点,这在我们的 preview docs here 中有记录。

【讨论】:

  • 我正在使用 FontAwesome React npm 模块
  • @fortawesome/react-fontawesome (0.0.20) 的当前版本为您禁用了 autoAddCss。请参阅此处:github.com/FortAwesome/react-fontawesome/blob/… 如果您仍然看到 CSS 自动添加,我需要在 CodeSandbox.io 或类似网站上查看该内容的复制品,以便有足够的上下文进行故障排除。
  • 这里是我在代码和框中的 repo 的链接 - 唯一的问题是我的 scss 都没有加载...从主页添加 /goozgooz 到 url 以使用 fontawesome @987654325 访问页面@
  • 我犯了一个错误。我坚持上面的回答(我会更新更多内容),但在上面的评论中我错误地说react-fontawesome 为你禁用了autoAddCss。它会禁用autoReplaceSvgobserveMutations,但不会禁用autoAddCss,所以如果你愿意,你必须自己做。您的复制品的这个分支显示了如何:codesandbox.io/s/2p5r4w645n
  • 解决了它。感谢您抽出宝贵时间来解决这个问题!