Font Awesome 在解析后注释掉 <i></i> 标签

Font Awesome commenting out <i></i> tag after parsing

我正在开发一个 React 应用程序,我想在其中有条件地呈现 FontAwesome 图标,但目前它没有在应该更改的时候更改。

我查了一下elements,发现FontAwesome把React组件注释掉了,换成了图标的svg,所以回去在React里面改FontAwesome图标的时候没有效果。下面是一个例子

<!-- Expected -->
<i class="fa fa-pause"></i>
<!-- Actual -->
<svg class="svg-inline--fa fa-pause fa-w-14" aria-hidden="true" focusable="false" data-prefix="fa" data-icon="pause" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" data-fa-i2svg>...</svg>
<!-- <i class="fa fa-pause"></i> Font Awesome fontawesome.com -->

我知道这可能与我最近所做的 webpack 更改有关(将 less loader 移动到 webpack.rules.js 而不是将其添加到 webpack.renderer.config.js 并更改了 style-loaderMiniCssExtractPlugin.loader),但我不确定到底是什么导致了它或如何修复它。我在下面包含了 fontawesome 导入和 webpack:

import '@fortawesome/fontawesome-free/js/all.js';
// webpack.rules.js
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = [
  {
    test: /\.node$/,
    use: 'node-loader',
  },
  {
    test: /\.(m?js|node)$/,
    parser: {amd: false},
    use: {
      loader: '@marshallofsound/webpack-asset-relocator-loader',
      options: {
        outputAssetBase: 'native_modules',
      },
    },
  },
  {
    test: /\.tsx?$/,
    exclude: /(node_modules|\.webpack)/,
    use: {
      loader: 'ts-loader',
      options: {
        transpileOnly: true,
      },
    },
  },
  {
    test: /\.less$/,
    use: [MiniCssExtractPlugin.loader, {loader: 'css-loader'}, {loader: 'less-loader'}],
    exclude: [/\.(js|jsx|mjs)$/, /\.html$/, /\.json$/, /\.(config|variables|overrides)$/],
  },
]

我将导入更改为 import '@fortawesome/fontawesome-free/css/all.css'; 并对配置进行了一些调整后,这个问题就解决了。

Font Awesome 配置为此提供了 属性! https://fontawesome.com/v6/docs/apis/javascript/configuration#keeporiginalsource

keepOriginalSource(默认值:true): 如果替换为内联 SVG,请保留 HTML 注释 <-- --> 与原始标记。

您可以通过多种方式调整选项。

从浏览器设置配置 API:

window.FontAwesome.config.keepOriginalSource = false;

从 svg 核心包设置配置:

import { config } from '@fortawesome/fontawesome-svg-core';
config.keepOriginalSource = false;

使用脚本标签设置配置:

<script src="https://your-site-or-cdn.com/fontawesome/v6.1.1/js/all.js" data-keep-original-source ="false"></script>

设置将与默认 Font Awesome 配置合并的配置对象:

FontAwesomeConfig = {
  keepOriginalSource: false
}

所有可用的 Font Awesome js 配置选项列表以及如何配置它们: https://fontawesome.com/v6/docs/apis/javascript/configuration