"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Construindo um aplicativo React Expense Tracker

Construindo um aplicativo React Expense Tracker

Publicado em 31/10/2024
Navegar:242

Building a React Expense Tracker App

Introdução

Neste tutorial, criaremos um Aplicativo Web Expense Tracker usando React. Este projeto ajudará você a entender o gerenciamento de estado, manipulação de eventos e atualizações de listas dinâmicas no React. É ideal para iniciantes que desejam fortalecer seu conhecimento no desenvolvimento do React construindo um aplicativo prático e útil.

Visão geral do projeto

O aplicativo Expense Tracker permite que os usuários acompanhem suas receitas e despesas. Ajuda a gerenciar dados financeiros categorizando e calculando receitas, despesas e o saldo total. Este projeto mostra o uso do React para gerenciar o estado e lidar com a entrada do usuário de forma eficiente.

Características

  • Adicionar transações: os usuários podem adicionar transações de receitas ou despesas.
  • Monitorar saldo: os usuários podem visualizar seu saldo total e acompanhar as alterações dinamicamente.
  • Excluir transações: os usuários podem remover transações da lista.
  • Armazenamento local: as transações são persistidas durante as recargas de página usando localStorage.

Tecnologias Utilizadas

  • React: Para construir a interface do usuário e gerenciar o estado do componente.
  • CSS: Para estilizar o aplicativo.
  • JavaScript: Para lidar com a lógica central do aplicativo.

Estrutura do Projeto

A estrutura do projeto segue um layout típico de projeto React:

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

Componentes principais

  • TransactionList.jsx: Exibe e gerencia a lista de transações.
  • TransactionItem.jsx: representa uma transação individual.
  • AddTransaction.jsx: trata da adição de novas transações (receitas ou despesas).

Explicação do código

Componente TransactionList

Este componente trata da exibição das transações e do gerenciamento do estado de todas as transações.

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

O componente TransactionItem representa uma transação individual, incluindo opções para excluí-la.

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

export default TransactionItem;

Componente AdicionarTransação

Este componente gerencia a adição de novas transações, permitindo aos usuários inserir dados de receitas ou despesas.

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 do aplicativo

O App.jsx serve como raiz do aplicativo, renderizando os componentes TransactionList e 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

O CSS garante que o aplicativo tenha uma aparência limpa e 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;
}

Instalação e uso

Para começar, clone o repositório e instale as dependências:

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

O aplicativo começará a ser executado em http://localhost:3000.

Demonstração ao vivo

Confira a demonstração ao vivo do Expense Tracker aqui.

Conclusão

O projeto Expense Tracker demonstra como gerenciar listas e estados de maneira eficaz no React. É uma ótima maneira de aprender como construir aplicativos dinâmicos com armazenamento persistente de dados usando localStorage.

Créditos

  • Inspiração: Criado com a ideia de ajudar os usuários a rastrear suas transações financeiras.

Autor

Abhishek Gurjar é um desenvolvedor web dedicado e apaixonado por criar aplicativos web práticos e funcionais. Confira mais de seus projetos no GitHub.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/abhishekgurjar/building-a-react-expense-tracker-app-1lkj?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3