当前位置: 首页 > 面试题库 >

我如何才能将Font Awesome 5与React一起使用?

丌官高远
2023-03-14
问题内容

在以下示例中,将显示初始图标,但在类更改时它不会更改。

const Circle = ({ filled, onClick }) => {

  const className = filled ? 'fas fa-circle' : 'far fa-circle';



  return (

    <div onClick={onClick} >

      <i className={className} />

      <p>(class is {className})</p>

    </div>

  );

};



class App extends React.Component {

  state = { filled: false };



  handleClick = () => {

    this.setState({ filled: !this.state.filled });

  };



  render() {

    return <Circle filled={this.state.filled} onClick={this.handleClick} />;

  }

}



ReactDOM.render(<App />, document.getElementById("root"));


<script src="https://use.fontawesome.com/releases/v5.0.2/js/all.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>



<div id="root"></div>

问题答案:

BO41是正确的,它是字体真棒的javascript,不会重新渲染。如果您可以不使用新的font-awesome svg /
javascript图标,可以将font-awesome用作css的网络字体。

在index.html中,删除fontawesome脚本,然后添加font-awesome css样式表:

<link href="https://use.fontawesome.com/releases/v5.0.2/css/all.css" rel="stylesheet">

您的代码现在应该可以工作了。

另一种可能性是使用官方的字体超赞的react软件包(这有点麻烦,但它使用了新的svg图标)

向项目添加必要的包:

yarn add @fortawesome/fontawesome @fortawesome/react-fontawesome
yarn add @fortawesome/fontawesome-free-regular @fortawesome/fontawesome-free-solid

以及更新的代码:

import fontawesome from '@fortawesome/fontawesome'
import FontAwesomeIcon from '@fortawesome/react-fontawesome'
import { faCircle as fasCircle } from '@fortawesome/fontawesome-free-solid'
import { faCircle as farCircle } from '@fortawesome/fontawesome-free-regular'

const Circle = ({ filled, onClick }) => {

  return (
    <div onClick={onClick} >
      <FontAwesomeIcon icon={filled ? farCircle : fasCircle}/>
    </div>
  );
};

class App extends React.Component {
  state = { filled: false };

  handleClick = () => {
    this.setState({ filled: !this.state.filled });
  };

  render() {
    return <Circle filled={this.state.filled} onClick={this.handleClick} />;
  }
}

有关更多信息,请参见github回购:https :
//github.com/FortAwesome/react-
fontawesome



 类似资料:
  • 我想使用的与chrome API,但我遇到了一个问题... 我尝试了以下操作,但chrome API无法将识别为函数,因此我尝试先将保存为变量。。。 但是当我尝试以下操作时,仍然是一个空字符串。我不明白为什么,因为被设置为。我怎样才能解决这个问题? 编辑 我把剧本叫做... 在剧本里我有以下内容... 其中函数只返回一个字符串。它是由我的捕获的,我通过打印到if语句内的控制台来验证它。 我注意到是

  • 使用React-Native并尝试学习ES6语法。我昨天也遇到了类似的问题,并得到了解决方案。我补充说 .绑定(这个) 到我的我的函数调用和问题解决。我在另一个函数调用中再次遇到了同样的问题,我无法跟踪到底发生了什么。错误消息是相同的。

  • 问题内容: 我真的需要Babel或其他编译器在React中使用ES6吗? 我正在看图表https://kangax.github.io/compat- table/es6/ 好像我当前的浏览器Chrome(最新的稳定版)几乎支持所有ES6功能… 如果我可以在没有Babel的情况下使用ES6,该怎么办? 问题答案: 没有babel,您将获得所链接图表的兼容性。但是请记住,如果要使用JSX,则需要使用

  • 问题内容: 如何将chmod与Node.js一起使用? 程序包中有一个方法应该执行此操作,但是我不知道第二个参数是什么。 fs.chmod(路径,模式,[回调]) 异步chmod(2)。除了可能的异常外,没有其他参数被赋予完成回调。 fs.chmodSync(路径,模式) 同步chmod(2)。 (来自Node.js文档) 如果我做类似的事情 没有任何反应(文件未更改为该模式)。 也不起作用。 我

  • 问题内容: 抱歉,我缺乏知识,但我是新手,目前正在学习React。我只是想问一下是否要在我的React应用程序中使用Bootstrap 4,是否必须安装jQuery?我在某处读到,将jQuery与React一起使用是不行的。所以现在我想知道。谢谢回复。您的意见和建议是真正的赞赏。 问题答案: 某些功能(例如下拉菜单,模式)需要JS来操纵DOM,而引导程序则使用jQuery来处理DOM操纵。 但是,

  • 问题内容: 我正在使用我的应用程序对用户进行身份验证。我已经创建了和表单,并且可以成功创建新用户并使用存储的用户登录。但是,问题出在维护用户之后,保持用户登录状态。 我在教程中看到的方式是使用类似以下内容的命令检查当前用户是否已登录。 但是,我希望使用新版 本来消除对的需要。我已经 通过使用和访问的单个实例删除了。有没有使用新的方式来模拟这个 范围内,我创造? 我正在使用本教程 https://w