Iconify Icon web component with React

This tutorial is part of Iconify Icon web component tutorial.

Iconify icon web component works well with React, but there are few problems:

  • When using web components in React, you need to use class instead of className to pass class name.
  • Property icon can only be a string.
  • No JSX hints.

Iconify Icon for React

These problems are solved by Iconify Icon for React.

It is a wrapper for web component that provides support for className, allows to use objects with icon and provides typings for React component.

Installation

Instead of iconify-icon package, install @iconify-icon/react package:

npm install --save-dev @iconify-icon/react
yarn add --dev @iconify-icon/react

Usage

Import Icon component from @iconify-icon/react, set icon in icon property:

import React from 'react';
import { Icon } from '@iconify-icon/react';

export function Alert() {
   return (
       <div className="alert">
           <Icon icon="mdi-light:alert" />
           Important notice with alert icon!
       </div>

   );
}

Usage with objects

You can pass objects in icon property:

import React from 'react';
import { Icon } from '@iconify-icon/react';
import alertIcon from '@iconify-icons/mdi-light/alert';

export function Alert() {
   return (
       <div className="alert">
           <Icon icon={alertIcon} />
           Important notice with alert icon!
       </div>

   );
}

Functions

All other functions, listed in Iconify Icon web component tutorial, are available. You can import them directly from @iconify-icon/react package:

import React from 'react';
import { Icon, addIcon } from '@iconify-icon/react';

addIcon('alert', {
   body: '<path fill="currentColor" d="M1 21L11.5 2.813L22 21H1Zm19.268-1L11.5 4.813L2.732 20h17.536ZM11 14v-4h1v4h-1Zm0 2h1v2h-1v-2Z"/>',
   width: 24,
   height: 24,
});

export function Alert() {
   return (
       <div className="alert">
           <Icon icon="alert" />
           Important notice with alert icon!
       </div>

   );
}

See Iconify Icon web component for list of all attributes, functions and usage examples. @iconify-icon/react is only a wrapper for iconify-icon, not a different component, it supports all the same properties and functions.