Font Awesome 不能在 Router Link Vue.js 中工作(可能的 Vue-Router 错误)

Posted

技术标签:

【中文标题】Font Awesome 不能在 Router Link Vue.js 中工作(可能的 Vue-Router 错误)【英文标题】:Font Awesome not working within Router Link Vue.js (Possible Vue-Router Bug) 【发布时间】:2018-07-16 22:55:49 【问题描述】:

问题

出于某种原因,当我将 Font Awesome 图标作为 router-link 的第一个子元素时,Vue 决定忽略该图标之后的任何内容(图标本身有效)。

请参阅以下内容:

<router-link to="/"><font-awesome-icon icon="book" />Documentation</router-link>

这个输出:

// Actual: 
<a...><svg>...<svg></a>

// Expected:
<a...><svg>...<svg>Documentation</a>

有其他人经历过吗?我做错了吗?

我尝试过的

我尝试将图标和文本包装在 span 标记中,如下所示:

<router-link to="/"><span><font-awesome-icon icon="book" />Documentation</span></router-link>

这会产生与上面相同的结果(加上 span 标签)...

我还尝试将图标放在另一侧(仅用于测试),这很有效!

<router-link to="/">Documentation<font-awesome-icon icon="book" /></router-link>

上述测试有效,但是,这显然不是我想要的,我并不太热衷于使用 CSS 重新定位图标(非常肮脏的修复)

我的假设

我相信这实际上可能是渲染空元素时 vue-router 的一个错误,但我不能确定。我想我可以用&lt;br /&gt; 标签进行测试,看看会发生什么……我会回来的!

更新:我可以确认空元素确实有效!我刚刚尝试了以下方法,效果很好:

<router-link to="/"><br />Documentation</router-link>

【问题讨论】:

您找到解决方案了吗? 我在 25 分钟前才问过... :-) - 不,还没有 找到一个,正在输入 @Mohd_PH 你有同样的问题吗?我只是在玩 Vue,所以我不介意,但我想我会问这个问题,以防其他人遇到它...... @Mohd_PH 我希望有人告诉我我做错了,或者这是一个错误。我实际上对找到解决方法并不感兴趣,因为我可能很容易做到这一点......更多的是关于这是否是正确的方法:-) 【参考方案1】:

当我导入图标然后绑定它 :icon 时,它对我有用,你可以看到示例 Here 或下面:

<template>
 <div class="hello">
    <router-link to="/"><font-awesome-icon :icon="icon" />Documentation</router-link>
 </div>
</template>

<script>
 import FontAwesomeIcon from '@fortawesome/vue-fontawesome'
 import faBook from '@fortawesome/fontawesome-free-solid/faBook'
 export default 
  name: 'hello',
  components:
    'font-awesome-icon' : FontAwesomeIcon 
  ,
  computed:
    icon()
        return faBook;
    
  


</script>

【讨论】:

Hmmmm...如果你和我一样,它会起作用吗?即你能复制我的问题吗?假设我在任何给定页面上都会有许多图标,那么必须计算每个图标是非常糟糕的代码......更不用说,这只需要在图标位于 router-link 内时完成,从而导致代码不一致设计。本质上它只是一种解决方法...... 这证实了我的怀疑,这是一个错误:-) 不,它没有用,和你一样。即使在router-link 之外。 here is an example 在文档中 您需要将特定图标导入模板,然后它才能按照我的方式工作,如文档中所示。 compute 方法不是要求,因此当图标不是第一个孩子时它可以工作。我会为你的努力和时间投赞成票,因为非常感谢,但我不会接受这个作为答案,因为它只是实现我需要的一种解决方法。我希望你没问题 - 我只是想向其他人开放,因为他们可能会发现我编写的代码有问题,或者确认这是一个错误 干杯伙伴,有一个伟大的:-D

以上是关于Font Awesome 不能在 Router Link Vue.js 中工作(可能的 Vue-Router 错误)的主要内容,如果未能解决你的问题,请参考以下文章

关于font awesome或Glyphicons字体图标不能正确显示的问题

使用 Font Awesome 图标作为 CSS 内容

vue-cli 如何使用vue-awesome?

Symfony 5 无法使用 Font Awesome 图标

用 font-awesome 将小图标堆叠在大图标上

vue 中引入font-awesome