使用 React 的输入占位符中的 FontAwesome 图标

Posted

技术标签:

【中文标题】使用 React 的输入占位符中的 FontAwesome 图标【英文标题】:FontAwesome Icons in Input Placeholder using React 【发布时间】:2019-05-17 03:29:38 【问题描述】:

我正在使用 React 创建一个应用程序,我想使用 FontAwesome 图标将它们包含到输入占位符中,这样它看起来就像

<input type="text" placeholder="[here should be the user icon] Username" />

我该怎么做?我用过"&amp;#xF007; Username",它只显示一个正方形而不是一个图标。也许我忘记了什么?

【问题讨论】:

您是否将 fontawesome 设置为输入的字体系列?我从来没有使用 fontawesome 作为占位符,但是如果你看到的是一个正方形而不是一个图标,这通常意味着你没有使用 fontawesome 字体,而且你使用的任何字体都没有那个字符. 我已经安装了 react-fontawesome。也许我以错误的方式声明了 font-family: FontAwesome?还是应该在我的 scss 中导入很棒的字体? 您是否为::placeholder 设置了样式以使用令人敬畏的字体? 是的。我已经为 ::placeholder 设置了样式。但是我应该如何导入 font-awesome 本身以在字体系列中使用它? 看看***.com/questions/19350291/… 【参考方案1】:

尝试将您的图标包含为InputAddon,而不是将其强制放入占位符中。你可以通过几种方式做到这一点。我会推荐下面列出的两个。

方法 1:引导

您可以安装引导程序并使用input-group-prependinput-group-append 类并将您的图标放在那里。

例子:

    import  FaUserAlt  from 'react-icons/fa';

    render() 
      return (
        <div className="input-group mb-3">
          <div className="input-group-prepend">
            <i className="classes you have"><FaUserAlt /></i>
        </div>
        <input type="text" className="form-control" placeholder="Username" />
       </div>
     )
  

这将要求您安装 bootstrapreact-iconsbootstrap 安装将允许您使用那些classNamesreact-icons 安装将允许您将&lt;FaUserAlt /&gt; 用作组件,而不是通过 CSS。要安装bootstrap,请使用:npm i bootstrap。要安装react-icons,请使用:npm i react-icons

方法 2:Reactstrap

您可以使用reactstrap,它本质上是用于响应的 Bootstrap。这将要求您同时安装 reactstrapreact-iconsbootstrap,如下所示:npm i reactstrap bootstrap react-icons

示例:来自reactstrap 文档(略有改动)

import React from 'react';
import  InputGroup, InputGroupText, InputGroupAddon, Input  from 'reactstrap';
import  FaUserAlt  from 'react-icons/fa';
const Example = (props) => 
  return (
    <div>
      <InputGroup>
        <Input placeholder="Username" />
        <InputGroupAddon addonType="append">
          <FaUserAlt />
        </InputGroupAddon>
      </InputGroup>
    </div>
  );
;

export default Example;

替代方法

您可以简单地使用 CSS 完成上述操作。如果你只使用这个“图标占位符”一次,我会走那条路。但是,如果您在整个应用程序中始终如一地这样做,我认为研究上述两种方法可能是值得的。

希望这对遇到此问题的任何人有所帮助。

【讨论】:

【参考方案2】:

对于遇到此问题的任何人:

这个对我有用:How to include a Font Awesome icon in React's render()

我使用的是 font-awesome 包,而不是 @fortawesome/react-fontawesome 包。

npm install --save font-awesome

现在在你的 index.js 文件中导入 font-awesome

import '../node_modules/font-awesome/css/font-awesome.min.css'; 

import 'font-awesome/css/font-awesome.min.css';

那么有问题的代码是这样的:

<input type="text" placeholder="&#xF007; Username" />

只需从 https://fontawesome.com 复制所需图标的 unicode 并用它替换 F007

输入标签的样式如下:

font-family: FontAwesome;

【讨论】:

以上是关于使用 React 的输入占位符中的 FontAwesome 图标的主要内容,如果未能解决你的问题,请参考以下文章

如何在输入的占位符中使用 open-iconic-bootstrap

如何在输入标签的占位符中添加材质图标

在 UITextField 占位符中输入文本时,应一次消失一个字母

ASP MVC Razor 在输入占位符中编码特殊字符

使用 VBA 将 Excel 中的图表嵌入到 Powerpoint 中的指定占位符中

textarea占位符中的引号