🌐
50 React Coding Puzzles
  • 50 React Coding Puzzles
  • Contact
  • Reviews
  • Table of Contents
  • Introduction
  • 1 - Simple Counter App
  • 2 - Dynamic List of Items with Strikethrough
  • 3 - Color Picker with Hex Code Display
  • 4 - Password Strength Checker
  • 5 - Countdown Timer with Audio
  • 6 - Dynamic Movie List with Filtering and Sorting
  • 7 - Text Animation Component (Fade/Scroll)
  • 8 - Dynamically Generated Text Art
  • 9 - Meme Generator with Custom Text
  • 10 - "What Should I Eat?" Random Recipe Generator
  • 11 - Simple Quiz App with Multiple Choice
  • 12 - Unit Converter
  • 13 - Dynamic Image Gallery with Lightbox
  • 14 - Weather Widget with Temperature and Description
  • 15 - Contact Form with Email and Message Validation
  • 16 - Color Palette Generator
  • 17 - Drag-and-Drop Feature for Rearranging Items
  • 18 - Interactive Quiz with Dynamic Results and Feedback
  • 19 - To-Do List with Task Categorization
  • 20 - Note-Taking App with Markdown Support
  • 21 - Simple Calculator with Basic Operations
  • 22 - Word Scramble Game with Timer and Score
  • 23 - Number Guessing Game
  • 24 - Digital Clock with Time Zone Support
  • 25 - Interactive Time Zone Converter
  • 26 - Weather Forecast App with Location Detection
  • 27 - Real-Time Stock Ticker with Updates
  • 28 - Virtual Dice Roller with Multiple Dice
  • 29 - Responsive Navigation Menu with Dropdowns
  • 30 - Progress Bar for Loading or Task Completion
  • 31 - Modal Window for Alerts and Confirmations
  • 32 - Infinite Scroll for Loading More Content
  • 33 - Form Validation with Error Messages
  • 34 - Search Bar with Filtering and Suggestions
  • 35 - Drag-and-Drop File Upload
  • 36 - Interactive Color Picker with Sliders
  • 37 - Image Carousel with Autoplay
  • 38 - Rating System with Stars or Thumbs Up/Down
  • 39 - Comment Section with Nested Replies
  • 40 - Pagination for Long Lists of Data
  • 41 - Stopwatch app that tracks elapsed time
  • 42 - Responsive E-commerce Product Grid
  • 43 - Random Movie/Book Recommender
  • 44 - Kanban board for managing tasks with drag-and-drop
  • 45 - Chat application with real-time messaging using WebSockets
  • 46 - Calendar that displays events and allows scheduling
  • 47 - Tic-Tac-Toe Game
  • 48 - Hangman Game
  • 49 - Notes App
  • 50 - Expense Tracker
  • Afterword
  • Appendix
Powered by GitBook
On this page
  • Description
  • Algorithm
  • Classes
  • Code
  • Explanation
  • Possible Future Enhancements

19 - To-Do List with Task Categorization

Description

Create a React application that allows users to create and manage tasks with titles and descriptions, assign tasks to specific categories, view tasks organized by category, and mark tasks as complete or incomplete.

Algorithm

  1. Create a state variable to store the tasks and categories.

  2. Define a function to handle the creation of new tasks.

  3. Define a function to handle the assignment of tasks to categories.

  4. Define a function to handle the marking of tasks as complete or incomplete.

  5. Render the tasks organized by category.

Classes

  • Task: A component that represents a single task.

  • Category: A component that represents a single category.

  • TaskList: A component that renders the list of tasks organized by category.

Code

Task.js

import React from 'react';

function Task({ task, onTaskComplete }) {
  return (
    <div>
      <h2>{task.title}</h2>
      <p>{task.description}</p>
      <button onClick={() => onTaskComplete(task)}>Mark as Complete</button>
    </div>
  );
}

export default Task;

Category.js

import React from 'react';

function Category({ category, tasks }) {
  return (
    <div>
      <h2>{category.name}</h2>
      <ul>
        {tasks.map((task) => (
          <li key={task.id}>
            <Task task={task} onTaskComplete={onTaskComplete} />
          </li>
        ))}
      </ul>
    </div>
  );
}

export default Category;

TaskList.js

import React, { useState } from 'react';
import Task from './Task';
import Category from './Category';

function TaskList() {
  const [tasks, setTasks] = useState([
    { id: 1, title: 'Task 1', description: 'This is task 1', category: 'Category 1' },
    { id: 2, title: 'Task 2', description: 'This is task 2', category: 'Category 2' },
    { id: 3, title: 'Task 3', description: 'This is task 3', category: 'Category 1' },
  ]);
  const [categories, setCategories] = useState([
    { name: 'Category 1', tasks: [tasks[0], tasks[2]] },
    { name: 'Category 2', tasks: [tasks[1]] },
  ]);

  const handleTaskComplete = (task) => {
    setTasks(
      tasks.map((t) =>
        t.id === task.id ? { ...t, completed: true } : t
      )
    );
  };

  return (
    <div>
      {categories.map((category) => (
        <Category
          key={category.name}
          category={category}
          tasks={category.tasks}
        />
      ))}
    </div>
  );
}

export default TaskList;

Explanation

The Task component represents a single task, and the Category component represents a single category. The TaskList component renders the list of tasks organized by category. The user can create new tasks, assign tasks to categories, and mark tasks as complete or incomplete.

Possible Future Enhancements

  • Add more features to the task management system (e.g., due dates, priorities).

  • Improve the user interface and user experience.

  • Add authentication and authorization.

  • Allow users to create and manage their own categories.

  • Display the number of completed and incomplete tasks for each category.

Previous18 - Interactive Quiz with Dynamic Results and FeedbackNext20 - Note-Taking App with Markdown Support

Last updated 10 months ago