TutorialsArena

Creating Buttons in React with Material-UI: A Comprehensive Guide

Learn how to implement visually appealing and functional buttons in your React applications using Material-UI. This tutorial covers various button types (text, outlined, contained), customization options, and adding click handlers to trigger actions, enhancing user interaction and design.



Buttons in React using Material-UI

Introduction to Buttons in React

Buttons are fundamental UI elements that trigger actions. This guide demonstrates how to create various types of buttons using Material-UI, a popular React component library.

Button Variants

Material-UI buttons come in three main variants:

  • Text buttons: Low emphasis; ideal for less prominent actions (e.g., within cards).
  • Contained buttons: High emphasis; filled buttons with elevation.
  • Outlined buttons: Medium emphasis; have a border but are not filled.

Example showing basic button variants:

Basic Button Variants

<Stack spacing={2} direction="row">
  <Button variant="text">Text</Button>
  <Button variant="contained">Contained</Button>
  <Button variant="outlined">Outlined</Button>
</Stack>

Button Properties and Customization

Handling Clicks

Buttons accept an `onClick` handler function to perform actions when clicked.

onClick Handler

<Button onClick={() => alert('clicked')}>Click me</Button>

Colors

You can specify different colors using the `color` prop.

Button Colors

<Button color="secondary">Secondary</Button>
<Button color="success">Success</Button>
<Button color="error">Error</Button>

Sizes

The `size` prop controls the button size.

Upload Button

(Example showing an upload button using Material-UI's styling and icon components - code omitted for brevity)

Buttons with Icons and Labels

(Example showing buttons with both text and icons - code omitted for brevity)

Icon Buttons

(Example showing icon buttons – code omitted for brevity)

Icon Button Sizes and Colors

(Examples demonstrating size and color customization for icon buttons – code omitted for brevity)

Custom Buttons: Loading and Complex Buttons

(Examples showing loading buttons and combining different button types using `ButtonBase` – code omitted for brevity)

Handling Disabled Buttons and Styling

Material-UI handles disabled buttons by setting `pointer-events: none;`. To customize the cursor, you can use CSS to override this. Remember considerations for tooltips on disabled elements.

Unstyled Buttons

Material-UI provides unstyled buttons for maximum control and optimization.

Using the Button Component in a React App

Creating a React App with Material-UI

Step 1: Create a New React App

Run the following command in your terminal:

Command

npx create-react-app my-app

This creates a new React app named my-app.

Step 2: Install Material-UI

After navigating to your project directory, install Material-UI using the following command:

Command

cd my-app
npm install @mui/material @emotion/react @emotion/styled

Step 3: Update App.js to Implement Material-UI Buttons

Modify the src/App.js file as shown below to add Material-UI buttons.

React Code

import React from 'react';
import './App.css';
import Button from '@mui/material/Button'; // Importing Material-UI Button component

function App() {
  return [
    <div className="App">
    <h1>Welcome to My React App with Material-UI
    
      {/* Material-UI Button with default styling */}
      <Button variant="contained" color="primary">
        Primary Button
        </Button>

      {/* Material-UI Button with custom size and color */}
      <Button variant="outlined" color="secondary" size="large">
        Secondary Button
        </Button>

      {/* Material-UI Button with custom onClick event */}
      <Button
        variant="contained"
        color="success"
        onClick={() => alert('Button Clicked!')}
      >
        Success Button
    </Button>
    </div>
  ];
}

export default App;

Explanation:

  • Button is imported from the Material-UI library.
  • variant="contained": Gives the button a filled-in background.
  • variant="outlined": Provides an outlined button style.
  • color="primary", color="secondary", color="success": Predefined Material-UI color themes.
  • size="large": Increases the button size.
  • onClick={() => alert('Button Clicked!')}: Triggers an alert when clicked.

Step 4: Run the Application

Start your React app using the following command:

Command

npm start

Expected Output:

The app will display a heading (Welcome to My React App with Material-UI) and three buttons:

  • A primary button with a filled color.
  • A secondary button with an outline and large size.
  • A success button that shows an alert when clicked.

This completes the implementation of Material-UI buttons in a React app!