Erstellen eines BMI-Rechners mit React

Building a BMI Calculator with React
Introduction
Body Mass Index (BMI) is a widely used metric to determine if a person has a healthy body weight for a given height. In this blog, we'll walk through the creation of a simple yet functional BMI Calculator using React. This project allows users to input their weight and height to calculate their BMI and provides a classification based on the result.
Project Overview
The BMI Calculator is a responsive web application built with React. It takes the user's weight (in kilograms) and height (in centimeters) as inputs and calculates the BMI. The app then displays the calculated BMI along with a corresponding weight classification such as Underweight, Normal weight, Overweight, or Obesity.
Features
- User-Friendly Interface: A simple and clean UI that is easy to navigate.
- Real-Time Calculation: Users can calculate their BMI instantly by entering their weight and height.
- Responsive Design: The calculator is responsive and works well on different screen sizes.
- Weight Classification: Based on the calculated BMI, users are informed about their weight status.
Technologies Used
- React: The core library for building the user interface.
- JavaScript: For handling the logic of BMI calculation.
- CSS: To style the application and ensure a responsive design.
Project Structure
Here's a brief overview of the project's structure:
src/ │ ├── assets/ │ └── images/ │ └── BMI Logo.png ├── components/ │ └── BmiCalculator.jsx ├── App.jsx ├── App.css └── index.css
Code Explanation
1. BmiCalculator Component
This component is the heart of the application. It handles user inputs, performs the BMI calculation, and displays the result.
import { useState } from "react";
import logoImg from "../assets/images/BMI Logo.png";
const BmiCalculator = () => {
const [weight, setWeight] = useState("");
const [height, setHeight] = useState("");
const [bmi, setBMI] = useState("");
const [result, setResult] = useState("");
function calculateBMI(weight, height) {
const heightM = height / 100;
const bmiResult = weight / (heightM * heightM);
setBMI(bmiResult.toFixed(2)); // Round to 2 decimal places
if (bmiResult < 18.5) {
setResult("Underweight");
} else if (bmiResult < 24.9) {
setResult("Normal weight");
} else if (bmiResult < 29.9) {
setResult("Overweight");
} else {
setResult("Obesity");
}
}
const handleCalculateBMI = () => {
if (weight && height) {
calculateBMI(weight, height);
}
};
return (
<div className="bmi-container">
<div className="logo">
<img src={logoImg} alt="BMI Logo" />
</div>
<div className="input-box">
<div className="weight-input">
<h4>Weight (kg)</h4>
<input
type="number"
value={weight}
onChange={(e) => setWeight(e.target.value)}
/>
</div>
<div className="height-input">
<h4>Height (cm)</h4>
<input
type="number"
value={height}
onChange={(e) => setHeight(e.target.value)}
/>
</div>
</div>
<button onClick={handleCalculateBMI} className="btn">
<h2>Calculate BMI</h2>
</button>
<div className="output-box">
<p>Your BMI : <b>{bmi}</b></p>
<p>Result : <b>{result}</b></p>
</div>
</div>
);
};
export default BmiCalculator;
2. App Component
The App component serves as the main container, wrapping the BmiCalculator component and adding a header and footer.
import BmiCalculator from "./components/BmiCalculator";
import "./App.css";
const App = () => {
return (
<div className="app">
<div className="header">
<h1>BMI Calculator</h1>
</div>
<BmiCalculator />
<div className="footer">
<p>Made with ❤️ by Abhishek Gurjar</p>
</div>
</div>
);
};
export default App;
3. Styling the App (App.css)
The CSS ensures that the app is visually appealing and responsive.
* {
box-sizing: border-box;
}
body {
margin: 0;
padding: 0;
font-family: sans-serif;
background-color: #008f7d;
color: white;
}
.app {
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
margin-top: 30px;
}
.header {
text-align: center;
font-size: 18px;
}
.bmi-container {
margin: 40px;
width: 500px;
height: 430px;
background-color: white;
color: black;
border-radius: 15px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;
}
.logo img {
width: 50px;
height: 50px;
margin: 15px;
}
.input-box {
display: flex;
flex-direction: column;
align-items: center;
}
.input-box h4 {
color: gray;
}
.weight-input,
.height-input {
display: flex;
align-items: center;
justify-content: space-between;
gap: 25px;
}
.weight-input input,
.height-input input {
height: 27px;
width: 180px;
font-weight: 400;
font-size: 14px;
border-radius: 7px;
}
.btn {
margin: 15px;
width: 65%;
height: 10%;
display: flex;
align-items: center;
justify-content: center;
background-color: #087fff;
color: white;
border: 0.5px solid black;
border-radius: 7px;
}
.btn:hover {
background-color: #2570c1;
}
.output-box {
margin-top: 20px;
width: 65%;
height: 15%;
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: center;
background-color: #e2e2e2;
color: black;
border-radius: 7px;
border: 1px solid black;
}
.output-box p {
margin-left: 20px;
line-height: 0;
}
.footer {
text-align: center;
font-size: 14px;
}
Installation and Usage
To run the BMI Calculator on your local machine, follow these steps:
- Clone the Repository:
git clone https://github.com/abhishekgurjar-in/Bmi_Calculator.git
- Install Dependencies: Navigate to the project directory and run:
npm install
- Start the Application: Launch the app by running:
npm start
The application should open in your default web browser at http://localhost:3000.
Live Demo
Check out the live demo of the BMI Calculator here.
Conclusion
In this project, we built a simple yet effective BMI Calculator using React. This project demonstrates the use of React state management, conditional rendering, and basic styling to create a user-friendly interface. Whether you're just starting with React or looking to practice your skills, this project is a great way to get hands-on experience.
Credits
- Logo: The BMI logo used in this project is sourced from Unsplash.
- Inspiration: This project was inspired by various BMI calculators available online.
Author
Abhishek Gurjar is a passionate web developer with a focus on building intuitive and responsive web applications. Follow his journey and explore more projects on GitHub.
Das obige ist der detaillierte Inhalt vonErstellen eines BMI-Rechners mit React. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Heiße KI -Werkzeuge
Undress AI Tool
Ausziehbilder kostenlos
Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos
AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.
Clothoff.io
KI-Kleiderentferner
Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!
Heißer Artikel
Heiße Werkzeuge
Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor
SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen
Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung
Dreamweaver CS6
Visuelle Webentwicklungstools
SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)
Heiße Themen
Wie arbeite man mit Daten und Zeiten in JS?
Jul 01, 2025 am 01:27 AM
Die folgenden Punkte sollten bei der Verarbeitung von Daten und Zeiten in JavaScript festgestellt werden: 1. Es gibt viele Möglichkeiten, Datumsobjekte zu erstellen. Es wird empfohlen, ISO -Format -Zeichenfolgen zu verwenden, um die Kompatibilität sicherzustellen. 2. Die Zeitinformationen erhalten und festlegen können und setzen Sie Methoden fest, und beachten Sie, dass der Monat mit 0 beginnt. 3. Die manuell formatierende Daten sind Zeichenfolgen erforderlich, und auch Bibliotheken von Drittanbietern können verwendet werden. 4. Es wird empfohlen, Bibliotheken zu verwenden, die Zeitzonen wie Luxon unterstützen. Das Beherrschen dieser wichtigen Punkte kann häufige Fehler effektiv vermeiden.
Warum sollten Sie Tags am Ende des platzieren?
Jul 02, 2025 am 01:22 AM
PlatztagsattheBottomofabogpostorwebpageServeSpracticalPurposesforseo, Usexperience und design.1ithelpswithseobyallowingEnginestoaccessKeyword-relevantTagswithoutClutteringHemainContent.2.
Was sprudelt und fängt Ereignis im Dom?
Jul 02, 2025 am 01:19 AM
Ereigniserfassung und Blase sind zwei Phasen der Ereignisausbreitung in DOM. Die Erfassung erfolgt von der oberen Schicht bis zum Zielelement, und die Blase ist vom Zielelement bis zur oberen Schicht. 1. Die Ereigniserfassung wird implementiert, indem der UseCapture -Parameter von AddEventListener auf true festgelegt wird. 2. Ereignisblase ist das Standardverhalten, Uscapture ist auf false oder weggelassen. 3. Die Ereignisausbreitung kann verwendet werden, um die Ereignisausbreitung zu verhindern. 4. Event Bubbling unterstützt die Ereignisdelegation, um die Effizienz der dynamischen Inhaltsverarbeitung zu verbessern. 5. Capture kann verwendet werden, um Ereignisse im Voraus abzufangen, wie z. B. Protokollierung oder Fehlerverarbeitung. Das Verständnis dieser beiden Phasen hilft dabei, das Timing und die Reaktion von JavaScript auf Benutzeroperationen genau zu steuern.
Wie können Sie die Nutzlastgröße einer JavaScript -Anwendung reduzieren?
Jun 26, 2025 am 12:54 AM
Wenn JavaScript -Anwendungen langsam geladen werden und eine schlechte Leistung haben, ist das Problem, dass die Nutzlast zu groß ist. Zu den Lösungen gehören: 1. Verwenden Sie die Codespaltung (codessplitting), teilen Sie das große Bündel über React.lazy () in mehrere kleine Dateien auf und laden Sie es nach Bedarf, um den ersten Download zu reduzieren. 2. Entfernen Sie den unbenutzten Code (Treeshaker), verwenden Sie den ES6 -Modulmechanismus, um "toten Code" zu löschen, um sicherzustellen, dass die eingeführten Bibliotheken diese Funktion unterstützen. 3.. Ressourcendateien komprimieren und verschmelzen, GZIP/Brotli und Terser aktivieren, JS zu komprimieren, Dateien vernünftig zusammenzufassen und statische Ressourcen zu optimieren. V.
Eine endgültige JS -Zusammenfassung auf JavaScript -Modulen: ES -Module gegen CommonJs
Jul 02, 2025 am 01:28 AM
Der Hauptunterschied zwischen ES -Modul und CommonJs ist das Lademethode und das Nutzungsszenario. 1.Kommonjs ist synchron geladen und für die node.js server-Seite-Umgebung geeignet. 2. Das Modul ist asynchron geladen und für Netzwerkumgebungen wie Browser geeignet. A. 4.Commonjs wird in alten Versionen von Node.js und Bibliotheken, die auf IT wie Express angewiesen sind, häufig verwendet, während ES-Module für moderne Front-End-Frameworks und Node.jsv14 geeignet sind; 5. Obwohl es gemischt werden kann, kann es leicht zu Problemen führen.
Wie stelle ich eine HTTP -Anforderung in node.js?
Jul 13, 2025 am 02:18 AM
Es gibt drei gängige Möglichkeiten, HTTP-Anforderungen in Node.js zu initiieren: Verwenden Sie integrierte Module, Axios und Knotenfetch. 1. Verwenden Sie das integrierte HTTP/HTTPS-Modul ohne Abhängigkeiten, das für grundlegende Szenarien geeignet ist, jedoch eine manuelle Verarbeitung von Datengenähten und Fehlerüberwachung erfordert, z. 2.Axios ist eine auf Versprechen basierende Bibliothek von Drittanbietern. Es verfügt über eine kurze Syntax und leistungsstarke Funktionen, unterstützt Async/Auseait, automatische JSON -Konvertierung, Interceptor usw. Es wird empfohlen, asynchrone Anforderungsvorgänge zu vereinfachen. 3.Node-Fetch bietet einen Stil ähnlich dem Browser-Abruf, basierend auf Versprechen und einfacher Syntax
Was sind Best Practices für das Schreiben eines sauberen und wartbaren JavaScript -Codes?
Jun 23, 2025 am 12:35 AM
Um sauberen und aufrechterhaltenen JavaScript -Code zu schreiben, sollten die folgenden vier Punkte befolgt werden: 1. Verwenden Sie klare und konsistente Benennungsspezifikationen. Variablennamen werden mit Substantiven wie der Anzahl verwendet, Funktionsnamen werden mit Verben wie FetchData () und Klassennamen mit Pascalcase wie Benutzerprofil verwendet. 2. Vermeiden Sie übermäßig lange Funktionen und Nebenwirkungen. Jede Funktion macht nur eine Sache, z. B. die Aufteilung von Aktualisierung von Benutzerinformationen in Formatuser, SaveUser und Renderuser. 3.. Verwenden Sie die Modularität und Komponentierung vernünftigerweise, z. 4. Schreiben Sie Kommentare und Dokumente bis zum Zeitpunkt und konzentrieren
var vs let vs const: ein kurzer JS -Roundup Explarer
Jul 02, 2025 am 01:18 AM
Der Unterschied zwischen VaR, LET und CONT ist Geltungsbereich, Werbung und wiederholte Erklärungen. 1.VAR ist das Funktionsbereich mit variabler Werbung, die wiederholte Deklarationen ermöglicht. 2. Das Glied ist der Umfang auf Blockebene mit vorübergehenden toten Zonen, und wiederholte Erklärungen sind nicht zulässig. 3.Konst ist auch der Umfang auf Blockebene und muss sofort zugewiesen werden und kann nicht neu zugewiesen werden, aber der interne Wert des Referenztyps kann geändert werden. Verwenden Sie zuerst const, verwenden Sie LET, wenn Sie Variablen ändern, und vermeiden Sie die Verwendung von VAR.


