Rating

React Bootstrap 5 Rating component

Responsive react star rating built with Bootstrap 5, React 18 and Material Design 2.0. Examples with stars or other custom symbols, styled active elements, dynamic icons and number of icons.

Rating component can be used to allow the users to share their opinion about the product, documentation page, photo and more.

Note: Read the API tab to find all available options and advanced customization


Basic example

You can automatically initialize the rating component using MDBRating

        
            
          import React from 'react';
          import { MDBRating, MDBRatingElement } from 'mdb-react-ui-kit';
          
          export default function App() {
            return (
              <MDBRating>
                <MDBRatingElement title='Bad' itemId={1} icon='star' />
                <MDBRatingElement title='Poor' itemId={2} icon='star' />
                <MDBRatingElement title='OK' itemId={3} icon='star' />
                <MDBRatingElement title='Good' itemId={4} icon='star' />
                <MDBRatingElement title='Excellent' itemId={5} icon='star' />
              </MDBRating>
            );
          }
          
        
    

Controlled value

Create controlled component by passing value prop. Use a handler on onChange to update the state.

        
            
            import React, { useState } from 'react';
            import { MDBRating, MDBRatingElement } from 'mdb-react-ui-kit';

            export default function App() {
              const [value, setValue] = useState(0);
              return (
                <MDBRating value={value} onChange={(val) => setValue(val)}>
                  <MDBRatingElement title='Bad' itemId={1} icon='star' />
                  <MDBRatingElement title='Poor' itemId={2} icon='star' />
                  <MDBRatingElement title='OK' itemId={3} icon='star' />
                  <MDBRatingElement title='Good' itemId={4} icon='star' />
                  <MDBRatingElement title='Excellent' itemId={5} icon='star' />
                </MDBRating>
              );
            }
          
        
    

Read only

If you want to use a rating to show the score you can only pass the active property.

        
            
          import React from 'react';
          import { MDBRating, MDBRatingElement } from 'mdb-react-ui-kit';
          
          export default function App() {
            return (
              <MDBRating defaultValue={3}>
                <MDBRatingElement itemId={1} icon='star' />
                <MDBRatingElement itemId={2} icon='star' />
                <MDBRatingElement itemId={3} icon='star' />
                <MDBRatingElement itemId={4} icon='star' />
                <MDBRatingElement itemId={5} icon='star' />
              </MDBRating>
            );
          }
          
        
    

Events

        
            
          import React from 'react';
          import { MDBRating, MDBRatingElement } from 'mdb-react-ui-kit';
          
          export default function App() {

            return (
              <MDBRating>
                <MDBRatingElement
                  itemId={1}
                  icon='star'
                  onClick={(e) => console.log(e)}
                  onMouseEnter={(e) => console.log(e)}
                />
                <MDBRatingElement
                  itemId={2}
                  icon='star'
                  onClick={(e) => console.log(e)}
                  onMouseEnter={(e) => console.log(e)}
                />
                <MDBRatingElement
                  itemId={3}
                  icon='star'
                  onClick={(e) => console.log(e)}
                  onMouseEnter={(e) => console.log(e)}
                />
                <MDBRatingElement
                  itemId={4}
                  icon='star'
                  onClick={(e) => console.log(e)}
                  onMouseEnter={(e) => console.log(e)}
                />
                <MDBRatingElement
                  itemId={5}
                  icon='star'
                  onClick={(e) => console.log(e)}
                  onMouseEnter={(e) => console.log(e)}
                />
              </MDBRating>
            );
          }
                 
        
    

Custom text

You can add extra text before or after the icon using insertAfter and insertBefore

        
            
          import React from 'react';
          import { MDBRating, MDBRatingElement } from 'mdb-react-ui-kit';
          
          export default function App() {
            return (
              <MDBRating>
                <MDBRatingElement className='px-2 d-flex' itemId={1} icon='star' insertBefore='1' insertAfter='1' />
                <MDBRatingElement className='px-2 d-flex' itemId={2} icon='star' insertBefore='2' insertAfter='2' />
                <MDBRatingElement className='px-2 d-flex' itemId={3} icon='star' insertBefore='3' insertAfter='3' />
                <MDBRatingElement className='px-2 d-flex' itemId={4} icon='star' insertBefore='4' insertAfter='4' />
                <MDBRatingElement className='px-2 d-flex' itemId={5} icon='star' insertBefore='5' insertAfter='5' />
              </MDBRating>
            );
          }
                 
        
    

Custom icons

You can use other icons easily using icon property.

        
            
          import React from 'react';
          import { MDBRating, MDBRatingElement } from 'mdb-react-ui-kit';
          
          export default function App() {
            return (
              <MDBRating>
                <MDBRatingElement itemId={1} icon='heart' />
                <MDBRatingElement itemId={2} icon='heart' />
                <MDBRatingElement itemId={3} icon='heart' />
                <MDBRatingElement itemId={4} icon='heart' />
                <MDBRatingElement itemId={5} icon='heart' />
              </MDBRating>
            );
          }
                 
        
    

Number of icons

If you want to display more or less icons in your rating, all you have to do is add as many rating elements like inside the MDBRating tag.

        
            
          import React from 'react';
          import { MDBRating, MDBRatingElement } from 'mdb-react-ui-kit';
          
          export default function App() {
            return (
              <MDBRating>
                <MDBRatingElement itemId={1} icon='star' />
                <MDBRatingElement itemId={2} icon='star' />
                <MDBRatingElement itemId={3} icon='star' />
                <MDBRatingElement itemId={4} icon='star' />
                <MDBRatingElement itemId={5} icon='star' />
                <MDBRatingElement itemId={6} icon='star' />
                <MDBRatingElement itemId={7} icon='star' />
                <MDBRatingElement itemId={8} icon='star' />
                <MDBRatingElement itemId={9} icon='star' />
                <MDBRatingElement itemId={10} icon='star' />
              </MDBRating>
            );
          }
                 
        
    

Icons custom color

If you want to set your own icon color you can use the color property

        
            
          import React from 'react';
          import { MDBRating, MDBRatingElement } from 'mdb-react-ui-kit';
          
          export default function App() {
            return (
              <MDBRating>
                <MDBRatingElement itemId={1} icon='star' color='#673ab7' />
                <MDBRatingElement itemId={2} icon='star' color='#3f51b5' />
                <MDBRatingElement itemId={3} icon='star' color='#2196f3' />
                <MDBRatingElement itemId={4} icon='star' color='#03a9f4' />
                <MDBRatingElement itemId={5} icon='star' color='#00bcd4' />
              </MDBRating>
            );
          }
                 
        
    

Dynamic icons

You can make you rating more dynamically by adding dynamic

        
            
          import React from 'react';
          import { MDBRating, MDBRatingElement } from 'mdb-react-ui-kit';
          
          export default function App() {
            return (
              <MDBRating dynamic>
                <MDBRatingElement size='lg' itemId={1} icon='angry' color='#673ab7' />
                <MDBRatingElement size='lg' itemId={2} icon='frown' color='#3f51b5' />
                <MDBRatingElement size='lg' itemId={3} icon='meh' color='#2196f3' />
                <MDBRatingElement size='lg' itemId={4} icon='smile' color='#03a9f4' />
                <MDBRatingElement size='lg' itemId={5} icon='grin-stars' color='#00bcd4' />
              </MDBRating>
            );
          }
                 
        
    

Styling active elements

You can use active class to set different styles for selected elements

        
            
            import React from 'react';
            import { MDBRating, MDBRatingElement } from 'mdb-react-ui-kit';
            
            export default function App() {

              return (
                <MDBRating className='rating-active-example'>
                  <MDBRatingElement itemId={1} icon='star' />
                  <MDBRatingElement itemId={2} icon='star' />
                  <MDBRatingElement itemId={3} icon='star' />
                  <MDBRatingElement itemId={4} icon='star' />
                  <MDBRatingElement itemId={5} icon='star' />
                </MDBRating>
              );
            }
          
        
    
        
            
            .rating-active-example .active {
              color: #00c851 !important;
            }
          
        
    

Popover implementation example

Rating allows you to easily add popover functionality

        
            
          import React from 'react';
          import { MDBRating, MDBRatingElement } from 'mdb-react-ui-kit';
          
          export default function App() {
            return (
              <MDBRating>
                <MDBRatingElement popover='Example text' itemId={1} icon='star' />
                <MDBRatingElement popover='Example text' itemId={2} icon='star' />
                <MDBRatingElement popover='Example text' itemId={3} icon='star' />
                <MDBRatingElement popover='Example text' itemId={4} icon='star' />
                <MDBRatingElement popover='Example text' itemId={5} icon='star' />
              </MDBRating>
            );
          }
                 
        
    

Get selected value

Get the value selected by the user. Open the browser console to test how it's work

        
            
          import React, { useState, useEffect } from 'react';
          import { MDBRating, MDBRatingElement } from 'mdb-react-ui-kit';
          
          export default function App() {
            const [selectValue, setSelectValue] = useState(0);

            useEffect(() => {
              console.log(selectValue);
            }, [selectValue]);

            return (
              <MDBRating onChange={(value) => setSelectValue(value)} >
                <MDBRatingElement itemId={1} icon='star' />
                <MDBRatingElement itemId={2} icon='star' />
                <MDBRatingElement itemId={3} icon='star' />
                <MDBRatingElement itemId={4} icon='star' />
                <MDBRatingElement itemId={5} icon='star' />
              </MDBRating>
            );
          }
                 
        
    

Rating - API


Import

        
            
        import { 
          MDBRating,
          MDBRatingElement
        } from 'mdb-react-ui-kit';
      
        
    

Properties

MDBRating

Name Type Default Description Example
defaultValue number - The default value. Use when the component is not controlled <MDBRating defaultValue={4} />
value number - The value of the rating <MDBRating value={4} />
dynamic Boolean false Dynamically change previous icons to the currently selected/hovered icon <MDBRating dynamic />
readonly boolean false Disable hover, click and keypress events. <MDBRating readonly />
style React.CSSProperties - Add custom styles to MDBRating element. <MDBRating style={customStyles} />

MDBRatingElement

Name Type Default Description Example
color string '' Set icon color (for use only on the icons element) <MDBRatingElement color="#3f51b5" />
itemId Number - Sets element id number <MDBRatingElement itemId={1} />
icon string - Defines rating element icon <MDBRatingElement icon="star" />
iconClassName string '' Add custom classes to MDBRatingElement icon element <MDBRatingElement iconClassName={iconClasses} />
insertAfter React.ReactNode - Set a custom text after the icon <MDBRatingElement color="#3f51b5" insertAfter='1' />
insertBefore React.ReactNode - Set a custom text before the icon <MDBRatingElement color="#3f51b5" insertBefore='1' />
popover React.ReactNode - Set the text displayed in the popover (for use only on the icons element) <MDBRatingElement popover="exampleTitle" />
size 'sm' | 'lg' 'sm' Defines the icon size <MDBRatingElement size="lg" />

Events

MDBRating

Name Type Description
onChange (value: number) => void Fires immediately when the MDBRating component changes.

CSS variables

As part of MDB’s evolving CSS variables approach, rating now use local CSS variables on .rating for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

        
            
        // .rating
        --#{$prefix}rating-icon-padding: #{$rating-icon-padding};
        
        
    

SCSS variables

        
            
        $rating-icon-padding: 0.25rem;