React MUI TypeScript refers to using the MUI Module in React written in the Typescript. MUI provides UI components that are easy to use in React TypeScript.
Prerequisites:
Material-UI is a React UI framework based on Google's Material Design system that provides pre-built components and styling for building modern and intuitive web applications. It has a large and active community of contributors and a theme customization system for easy branding and design customization.
Modules required:
- react
- node
- @emotion/reactÂ
- @emotion/styled
- @material-ui/coreÂ
- @mui/icons-materialÂ
- @mui/material
Steps to Create React Application and Install Modules:
Step 1: Create a React app using the following command.
npx create-react-app react-mui-typescript --template typescript
Step 2: Now get into the project directory
cd react-mui-typescript
Step 3: Installing dependencies using the following command.
npm i @emotion/react @emotion/styled @material-ui/core @mui/icons-material @mui/material
Project Structure:
.png)
The updated dependencies in package.json file will look like.
"dependencies": {
"@emotion/react": "^11.11.1",
"@emotion/styled": "^11.11.0",
"@material-ui/core": "^4.12.4",
"@mui/icons-material": "^5.14.16",
"@mui/material": "^5.14.17",
"@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"@types/jest": "^27.5.2",
"@types/node": "^16.18.61",
"@types/react": "^18.2.37",
"@types/react-dom": "^18.2.15",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-scripts": "5.0.1",
"typescript": "^4.9.5",
"web-vitals": "^2.1.4"
}
Example 1: Here, in order to learn about the usage of MUI in React we will take an example of a text field and onChange event changing values in the page.
JavaScript
// Filename - App.tsx
import React from 'react';
// Import the LoginForm component
import LoginForm from './components/LoginForm';
// Define a function to handle the
// submission of the LoginForm
function handleLogin(
username: string,
password: string
) {
console.log(username, password);
}
// Define the App component
function App() {
return (
// Render a div that contains the
// LoginForm component
<div>
{/* Render an H1 element with
the text "Login Form" */}
<h1 style={{ textAlign: 'center' }}>
Login Form
</h1>
{/* Render the LoginForm component */}
<LoginForm onSubmit={handleLogin} />
</div>
);
}
// Export the App component
export default App;
JavaScript
// Filename - LoginForm.tsx
import React, { useState } from 'react';
import { makeStyles } from '@material-ui/core/styles';
import TextField from '@material-ui/core/TextField';
import Button from '@material-ui/core/Button';
// Define CSS styles using the makeStyles
// function provided by Material-UI
const useStyles = makeStyles({
form: {
display: 'flex',
flexDirection: 'column',
alignItems: 'center',
},
input: {
marginBottom: '1rem',
},
button: {
marginTop: '1rem',
},
});
// Define the type for the props passed
// to the LoginForm component
interface LoginFormProps {
onSubmit: (
username: string,
password: string
) => void;
}
// Define the LoginForm component using
// the functional component syntax
export default function LoginForm(props: LoginFormProps) {
// Use the styles defined earlier
const classes = useStyles();
// Define state variables for the
// username and password input fields
const [username, setUsername] = useState('');
const [password, setPassword] = useState('');
// Define a function to handle form submission
const handleSubmit =
(event: React.FormEvent<HTMLFormElement>) => {
// Prevent the default form submission behavior
event.preventDefault();
// Call the onSubmit prop
props.onSubmit(username, password);
};
// Render the login form using Material-UI components
return (
<form className={classes.form} onSubmit={handleSubmit}>
<TextField
className={classes.input}
label="Username"
variant="outlined"
value={username}
// Update the value of the username state
// variable when the input field changes
onChange={(event) => setUsername(event.target.value)}
/>
<TextField
className={classes.input}
label="Password"
type="password"
variant="outlined"
value={password}
// Update the value of the password state variable
// when the input field changes
onChange={(event) => setPassword(event.target.value)}
/>
<Button
className={classes.button}
variant="contained"
color="primary"
type="submit"
>
Login
</Button>
</form>
);
}
Steps to run the application: Use this command in the terminal inside the project directory.
npm start
Output: This output will be visible on http://localhost:3000/
.png)
Example 2: This example implements ClickCounter App with TypeScript similar to the above project.
JavaScript
// Filename - App.tsx
import ClickCounter from './components/ClickCounter';
function App() {
return (
<ClickCounter />
);
}
export default App;
JavaScript
// Filename - components/ClickCounter.tsx
import React, { useState } from 'react';
// Importing MUI components Button and Typography
import Button from '@mui/material/Button';
import Typography from '@mui/material/Typography';
// Defining a functional component called
// ClickCounter
const ClickCounter: React.FC = () => {
// Initializing the count state to 0
// using the useState hook
const [count, setCount] = useState(0);
// Defining a function that updates the count
// state when button is clicked
const handleButtonClick = () => {
setCount(count + 1);
};
// Return JSX elements that render the
// click counter UI
return (
<>
<Typography variant="h4" gutterBottom>
Click Counter
</Typography>
<Typography variant="body1" gutterBottom>
You have clicked the button {count} times.
</Typography>
<Button variant="contained"
onClick={handleButtonClick}>
Click me!
</Button>
</>
);
};
// Exporting ClickCounter component
export default ClickCounter;
Steps to run the application: Use this command in the terminal inside the project directory.
npm start
Output: This output will be visible on http://localhost:3000/
Similar Reads
Next.js TypeScript
NextJS is a powerful and popular JavaScript framework that is used for building server-rendered React applications. . It provides a development environment with built-in support for TypeScript, as well as a set of features that make it easy to build and deploy web applications. It was developed by Z
4 min read
TypeScript Tutorial
TypeScript is a superset of JavaScript that adds extra features like static typing, interfaces, enums, and more. Essentially, TypeScript is JavaScript with additional syntax for defining types, making it a powerful tool for building scalable and maintainable applications.Static typing allows you to
8 min read
NPM Typescript
Node Package Manager (npm) is a package manager for NodeJS and JavaScript, which is mainly used for installing, managing, and sharing reusable code packages. TypeScript, on the other hand, is a powerful superset of JavaScript that introduces static typing, enabling developers to write more robust an
5 min read
React MUI Theming
Material-UI is a user interface library that provides predefined and customizable React components for faster and easy web development. These Material-UI components are based on top of Material Design by Google. In this article let's discuss the Theming in the Material-UI library. The Theming in Rea
3 min read
TypeScript Cheat Sheet
TypeScript is a strongly typed, object-oriented, compiled programming language developed and maintained by Microsoft. It is a superset of JavaScript, adding static types and other powerful features to improve development efficiency and code quality. TypeScript is widely used in web development, espe
6 min read
How to use TypeScript with React?
TypeScript enhances JavaScript by adding strict type definitions, making your code more robust and maintainable. ReactJS, a popular library for building user interfaces, pairs excellently with TypeScript to create clean, efficient, and scalable codebases. Combining TypeScript with React offers a pow
3 min read
Introduction to TypeScript
TypeScript is a syntactic superset of JavaScript that adds optional static typing, making it easier to write and maintain large-scale applications.Allows developers to catch errors during development rather than at runtime, improving code reliability.Enhances code readability and maintainability wit
5 min read
React MUI Routing
React MUI is a UI library that provides fully-loaded components, bringing our own design system to our production-ready components. MUI is a user interface library that provides predefined and customizable React components for faster and easy web development, these Material-UI components are based o
3 min read
React MUI TabList API
MUI or Material-UI is a UI library providing predefined robust and customizable components for React for easier web development. The MUI design is based on top of Material Design by Google. In this article, we will discuss the React MUI TabList API. The Tabs are used to make navigation easier and mo
3 min read
React MUI Typography Display
React MUI is a UI library that provides fully-loaded components, bringing our own design system to our production-ready components. MUI is a user interface library that provides predefined and customizable React components for faster and easy web development, these Material-UI components are based o
4 min read