Class VS ClassName React JS 2025

Class vs ClassName in React JS

In React, the way we handle classes for styling is slightly different from traditional HTML. Instead of using the `class` attribute like in regular HTML, React uses `className` to avoid conflicts with the reserved keyword `class` in JavaScript. Let's explore the differences between `class` and `className` in React JS.

1. The `class` Attribute in HTML

In regular HTML, we use the `class` attribute to assign styles to elements. This is the standard way of defining classes in HTML.


        
        
This is a div with a class

Here, the `class` attribute is used to assign the class `my-class` to the `

` element in HTML. The `class` attribute tells the browser which CSS rules to apply to the element.

2. The `className` Prop in React

In React, the `class` keyword is reserved for defining classes in JavaScript (for creating class-based components). Therefore, React uses `className` to avoid conflicts and ensure that the correct functionality is maintained when dealing with styling.


        // React JSX Example
        const MyComponent = () => {
            return 
This is a div with a className
; };

In this React example, we use `className` to assign the `my-class` class to the `

` element. While it looks similar to HTML, the key difference is the use of `className` in JSX instead of `class`.

3. Why `className` is Used in React

The reason React uses `className` instead of `class` is due to the way JavaScript works. `class` is a reserved keyword in JavaScript, and trying to use it in JSX could result in conflicts. Since JSX is a syntax extension for JavaScript, React uses `className` to avoid this issue while still applying CSS classes to HTML elements.

4. Example Comparison: `class` vs `className`

Let's compare a simple HTML example with a React JSX example to understand the difference:


        
        
This is a regular HTML div
// React JSX Example const MyComponent = () => { return
This is a React JSX div
; };

In the HTML code, we use the `class` attribute, whereas in React JSX, we use `className` to apply the `text-center` class. Both ultimately achieve the same result in terms of styling, but React requires `className` to avoid conflicts with JavaScript's reserved keywords.

5. Common Mistake: Using `class` in React JSX

A common mistake among developers who are new to React is to use `class` instead of `className` in JSX. This can lead to unexpected behavior or errors, as React does not recognize `class` as a valid attribute in JSX.


        // Incorrect JSX Example - This will not work in React
        const MyComponent = () => {
            return 
This will throw an error
; };

In the above example, React will not recognize `class` and may ignore the styling or throw an error. Always use `className` when working with JSX.

6. Example with Tailwind CSS in React

Here’s an example of using `className` with Tailwind CSS in React. Tailwind CSS is a utility-first CSS framework, and it's commonly used in React applications.


        // React JSX with Tailwind CSS
        const MyComponent = () => {
            return (
                
This is a Tailwind-styled div using className
); };

In this example, we are using Tailwind CSS classes with `className` to style the `div` element. The `bg-blue-500` class adds a blue background, `text-white` changes the text color to white, `p-6` applies padding, and `rounded` gives rounded corners.

7. Conclusion

In summary, React uses `className` instead of `class` to avoid conflicts with JavaScript's `class` keyword. Whenever you work with JSX in React, always remember to use `className` to apply CSS classes. This ensures that your styles are applied correctly and prevents any errors or unexpected behavior.