"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Creación de una aplicación de seguimiento de gastos de React

Creación de una aplicación de seguimiento de gastos de React

Publicado el 2024-10-31
Navegar:503

Building a React Expense Tracker App

Introducción

En este tutorial, crearemos una Aplicación web de seguimiento de gastos usando React. Este proyecto lo ayudará a comprender la administración del estado, el manejo de eventos y las actualizaciones dinámicas de listas en React. Es ideal para principiantes que desean fortalecer sus conocimientos sobre el desarrollo de React mediante la creación de una aplicación práctica y útil.

Descripción general del proyecto

La aplicación Expense Tracker permite a los usuarios realizar un seguimiento de sus ingresos y gastos. Ayuda a gestionar datos financieros categorizando y calculando ingresos, gastos y el saldo total. Este proyecto muestra el uso de React para gestionar el estado y manejar la entrada del usuario de manera eficiente.

Características

  • Agregar transacciones: los usuarios pueden agregar transacciones de ingresos o gastos.
  • Seguimiento del saldo: los usuarios pueden ver su saldo total y realizar un seguimiento de los cambios de forma dinámica.
  • Eliminar transacciones: los usuarios pueden eliminar transacciones de la lista.
  • Almacenamiento local: las transacciones persisten durante las recargas de la página utilizando el almacenamiento local.

Tecnologías utilizadas

  • Reaccionar: para crear la interfaz de usuario y administrar el estado de los componentes.
  • CSS: Para aplicar estilo a la aplicación.
  • JavaScript: Para manejar la lógica central de la aplicación.

Estructura del proyecto

La estructura del proyecto sigue un diseño típico de proyecto React:

├── public
├── src
│   ├── components
│   │   ├── TransactionList.jsx
│   │   ├── TransactionItem.jsx
│   │   ├── AddTransaction.jsx
│   ├── App.jsx
│   ├── App.css
│   ├── index.js
│   └── index.css
├── package.json
└── README.md

Componentes clave

  • TransactionList.jsx: Muestra y administra la lista de transacciones.
  • TransactionItem.jsx: Representa una transacción individual.
  • AddTransaction.jsx: maneja la adición de nuevas transacciones (ingresos o gastos).

Explicación del código

Componente Lista de transacciones

Este componente se encarga de mostrar las transacciones y administrar el estado de todas las transacciones.

import { useState, useEffect } from "react";
import TransactionItem from "./TransactionItem";

const TransactionList = () => {
  const [transactions, setTransactions] = useState([]);

  useEffect(() => {
    const savedTransactions = JSON.parse(localStorage.getItem("transactions")) || [];
    setTransactions(savedTransactions);
  }, []);

  useEffect(() => {
    localStorage.setItem("transactions", JSON.stringify(transactions));
  }, [transactions]);

  const deleteTransaction = (index) => {
    const newTransactions = transactions.filter((_, i) => i !== index);
    setTransactions(newTransactions);
  };

  return (
    

Transaction History

    {transactions.map((transaction, index) => ( ))}
); }; export default TransactionList;

Componente TransactionItem

El componente TransactionItem representa una transacción individual, incluidas opciones para eliminarla.

const TransactionItem = ({ transaction, deleteTransaction }) => {
  const sign = transaction.amount 
      {transaction.text} 
      {sign}${Math.abs(transaction.amount)}
      
    
  );
};

export default TransactionItem;

Agregar componente de transacción

Este componente gestiona la adición de nuevas transacciones, permitiendo a los usuarios ingresar datos de ingresos o gastos.

import { useState } from "react";

const AddTransaction = ({ addTransaction }) => {
  const [text, setText] = useState("");
  const [amount, setAmount] = useState("");

  const handleSubmit = (e) => {
    e.preventDefault();
    const transaction = { text, amount:  amount };
    addTransaction(transaction);
    setText("");
    setAmount("");
  };

  return (
    

Add New Transaction

setText(e.target.value)} placeholder="Enter description" /> setAmount(e.target.value)} placeholder="Enter amount" />
); }; export default AddTransaction;

Componente de la aplicación

App.jsx sirve como raíz de la aplicación, representando los componentes TransactionList y AddTransaction.

import { useState } from "react";
import TransactionList from './components/TransactionList';
import AddTransaction from './components/AddTransaction';
import './App.css';

const App = () => {
  const [transactions, setTransactions] = useState([]);

  const addTransaction = (transaction) => {
    setTransactions([...transactions, transaction]);
  };

  return (
    

Expense Tracker

Made with ❤️ by Abhishek Gurjar

); }; export default App;

Estilo CSS

El CSS garantiza que la aplicación se vea limpia y fácil de usar.

body {
  font-family: Arial, sans-serif;
  background-color: #f4f4f4;
}

.app {
  width: 400px;
  margin: 50px auto;
  background-color: #fff;
  padding: 20px;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}

h1 {
  text-align: center;
}

input {
  width: calc(100% - 10px);
  padding: 5px;
  margin-bottom: 10px;
}

button {
  width: 100%;
  padding: 10px;
  background-color: #007BFF;
  color: #fff;
  border: none;
  cursor: pointer;
}

button:hover {
  background-color: #0056b3;
}

.transaction-list ul {
  list-style: none;
  padding: 0;
}

.transaction-list li {
  background-color: #f9f9f9;
  margin: 5px 0;
  padding: 10px;
  border-left: 5px solid green;
}

.transaction-list li.expense {
  border-left: 5px solid red;
}

.transaction-list span {
  float: right;
}

button {
  float: right;
  background-color: red;
  color: white;
  padding: 5px;
}
.footer{
    text-align: center;
    margin: 40px;
}

Instalación y uso

Para comenzar, clona el repositorio e instala las dependencias:

git clone https://github.com/abhishekgurjar-in/expense-tracker.git
cd expense-tracker
npm install
npm start

La aplicación comenzará a ejecutarse en http://localhost:3000.

Demostración en vivo

Vea la demostración en vivo de Expense Tracker aquí.

Conclusión

El proyecto Expense Tracker demuestra cómo administrar listas y estados de manera efectiva en React. Es una excelente manera de aprender a crear aplicaciones dinámicas con almacenamiento de datos persistente utilizando localStorage.

Créditos

  • Inspiración: Creado con la idea de ayudar a los usuarios a realizar un seguimiento de sus transacciones financieras.

Autor

Abhishek Gurjar es un desarrollador web dedicado y apasionado por la creación de aplicaciones web prácticas y funcionales. Vea más de sus proyectos en GitHub.

Declaración de liberación Este artículo se reproduce en: https://dev.to/abhishekgurjar/building-a-react-expense-tracker-app-1lkj?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3