【发布时间】:2018-05-22 06:47:48
【问题描述】:
我正在尝试通过单击待办事项列表项来切换 Font Awesome 图标。这是整个组件...
import React from 'react';
import './TodoItem.scss';
class TodoItem extends React.Component {
constructor(props) {
super(props);
this.state = {
complete: false
}
this.toggleComplete = this.toggleComplete.bind(this);
}
toggleComplete() {
this.setState(prevState => ({
complete: !prevState.complete
}));
}
render() {
const incompleteIcon = <span className="far fa-circle todo-item-icon"></span>;
const completeIcon = <span className="far fa-check-circle todo-item-icon"></span>;
return (
<div className="todo-item" onClick={this.toggleComplete}>
{this.state.complete ? completeIcon : incompleteIcon}
<span className="todo-item-text">{this.props.item}</span>
</div>
);
}
}
export default TodoItem;
这是我的 FA 5 CDN(直接来自网站)...
<script defer src="https://use.fontawesome.com/releases/v5.0.1/js/all.js"></script>
我截取了一些 React 开发工具和检查器的屏幕截图...
检查器中的两个图标元素,我注意到默认情况下未使用的元素被注释掉了。
如您所见,我可以在 React 工具中手动切换完整状态和组件更改,但不会呈现更改。我更改了默认状态以确保两个图标都正确加载并且它们是正确的。我创建了一个Codepen 以在不同的环境中尝试它,这个有效,但我使用的是 FA 4.7.0 CDN。使用 Codepen 和 FA 4.7.0,当我检查图标时,它只是一个 HTML 元素而不是 SVG。
我想让这个组件与 FA 5 一起工作,所以任何帮助都将不胜感激!
【问题讨论】:
-
嗨,我把你的代码放到了一个codepen中,它似乎可以工作。 codepen.io/swyx/pen/mqZxoL 所以很可能你有某种 FA 加载问题。
-
@swyx 自己尝试过,这似乎是一个 FA 问题,代码在任何其他情况下都有效。 React 是否有可能不会渲染它,因为元素之间的唯一区别是类而不是内容?感谢您的帮助,不知道这是什么。
-
不,您可以通过在该类上放置任何其他具有某种样式的类来检查是否是这种情况
-
@swyx 是的,我没有想到这一点。哎呀。
标签: javascript reactjs font-awesome font-awesome-5