Как разместить событие onClick на значке шрифта awesome в React?

Я пытаюсь установить событие onClick для значка fontawesome, но когда я это делаю, он не работает.

 <i class = "fab fa-accessible-icon" onClick = {this.removeItems}></i>

Это работает только тогда, когда я помещаю теги onClick в теги p или h, как это.

 <h1 onClick = {this.removeItems}><i class = "fab fa-accessible-icon"></i></h1>

Невозможно установить событие на самом значке? Второй способ вызывает у меня ошибки стиля.

Обновлено: я изменил класс на className, мой плохой. но он все еще не работает, и в настоящее время я его обхожу, используя значок и имея onClick в диапазоне.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
8
0
19 068
6

Ответы 6

Может попробовать

<i className = "fab fa-accessible-icon" onClick = {this.removeItems}></i>

Я смог получить

<i onClick = {doSomething}>Testing</i>

для обработки события щелчка, но оно было обработано как jsx (метод ala render ()) - при условии, что вы делаете то же самое.

Измените атрибут класса на ClassName <i className = "fab fa-accessible-icon" onClick = {this.removeItems}></i> Я думаю, это работа. проверьте демо https://stackblitz.com/edit/react-nh2bqu

Что ж, это должно работать, как показано ниже ...

<link href = "https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel = "stylesheet" integrity = "sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin = "anonymous">
<i class = "fa fa-cog" onClick = "console.info('Clicked')"></i>

Если нет, попробуйте обернуть свой значок в button

<link href = "https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel = "stylesheet" integrity = "sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin = "anonymous">
<button><i class = "fa fa-cog" onClick = "console.info('Clicked')"></i></button>

Здесь вы можете посмотреть в документации по реакции, в которой объясняется, как использовать className вместо class. Также оберните свой тег <i> в тег button и используйте там функцию onClick().

Не могли бы вы объяснить, почему <i> должен быть заключен в тег <button>?

dnhyde 23.11.2020 09:32

Вы путаете JSX с HTML. Тег i, который у вас есть в вашем коде, не является простым тегом html, это объект javascript (подробнее о jsx здесь). React позаботится о привязке событий за вас, не беспокойтесь, если вы не видите onClick в своем html.

Если вы используете React-fontawesome, вы можете использовать компонент FontAwesomeIcon и установить как id, так и onClick:

<FontAwesomeIcon id = {yourIdGoesHere} icon = {faEdit}  onClick = {this.editItem} />

...

editItem = event => {
  let idOfClickedIcon = event.currentTarget.id
  ...do something with the item associated with the id
}

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