Иконки FontAwesome в заполнителе ввода с использованием React

Я использую React для создания приложения, и я хочу использовать значки FontAwesome для включения их в заполнитель ввода, чтобы он выглядел как

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

Как я могу это сделать? Я использовал "&#xF007; Username", и он показывает только квадрат вместо значка. Может я что то забыл?

Вы установили fontawesome в качестве семейства шрифтов для ввода? Я никогда не использовал fontawesome в качестве заполнителя, но если вы видите квадрат вместо значка, это обычно означает, что вы не используете шрифт fontawesome, и в любом шрифте, который вы используете, нет этого символа. .

Nate 16.12.2018 16:50

Я установил response-fontawesome. Может я неправильно объявил font-family: FontAwesome? Или мне следует импортировать шрифт awesome в свой scss?

user8907938 16.12.2018 16:52

вы добавили стили для ::placeholder, чтобы использовать отличный шрифт?

skyboyer 16.12.2018 16:53

Ага. Я поместил стили для :: placeholder. Но как мне импортировать сам font-awesome, чтобы использовать его в семействе шрифтов?

user8907938 16.12.2018 16:57

посмотрите stackoverflow.com/questions/19350291/…

skyboyer 16.12.2018 17:01
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
3
5
9 449
2

Ответы 2

Попробуйте включить свой значок как InputAddon, а не вставлять его в местозаполнитель. Вы можете сделать это несколькими способами. Я бы предложил два из перечисленных ниже.

Подход 1: Bootstrap

Вы можете установить начальную загрузку и использовать классы input-group-prepend или input-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>
     )
  }

Для этого вам потребуется установить bootstrap и react-icons. Установка bootstrap позволит вам использовать эти classNames, а установка react-icons позволит вам использовать <FaUserAlt /> в качестве компонента, а не через CSS. Для установки bootstrap используйте: npm i bootstrap. Для установки react-icons используйте: npm i react-icons.

Подход 2: Reactstrap

Вы можете использовать reactstrap, который по сути является Bootstrap для реакции. Для этого вам потребуется установить reactstrap, react-icons и bootstrap, например: 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. Я бы пошел по этому пути, если бы вы использовали этот «заполнитель значков» только один раз. Но, если вы постоянно делаете это во всем своем приложении, я думаю, что, возможно, стоит изучить два вышеупомянутых подхода.

Надеюсь, это поможет любому, кто сталкивается с этим.

Для всех, кто сталкивается с этой проблемой:

У меня сработало: Как включить значок Font Awesome в Render () React

Вместо пакета @ fortawesome / react-fontawesome я использовал пакет font-awesome.

npm install --save font-awesome

Теперь импортируйте font-awesome в свой файл index.js.

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 и замените им F007.

И введите тег ввода стиля следующим образом:

font-family: FontAwesome;

Другие вопросы по теме