🌐
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

9 - Meme Generator with Custom Text

Description

Create a React application that generates memes with custom text.

Algorithm

  1. Initialize state variables to store the meme image, top text, and bottom text.

  2. Render a form to input custom text and select a meme image.

  3. Define a function to generate the meme with the custom text.

  4. Render the generated meme.

Classes

MemeGenerator: A React component that manages the meme state and generates the meme.

Code

import React, { useState } from 'react';

function MemeGenerator() {
  const [image, setImage] = useState('');
  const [topText, setTopText] = useState('');
  const [bottomText, setBottomText] = useState('');
  const [meme, setMeme] = useState('');

  const handleGenerateMeme = () => {
    const memeImage = new Image();
    memeImage.src = image;
    const canvas = document.createElement('canvas');
    canvas.width = memeImage.width;
    canvas.height = memeImage.height;
    const ctx = canvas.getContext('2d');
    ctx.drawImage(memeImage, 0, 0);
    ctx.fillStyle = 'white';
    ctx.strokeStyle = 'black';
    ctx.lineWidth = 2;
    ctx.font = '30px Impact';
    ctx.textAlign = 'center';
    ctx.textBaseline = 'middle';
    ctx.fillText(topText, canvas.width / 2, canvas.height / 2 - 50);
    ctx.fillText(bottomText, canvas.width / 2, canvas.height / 2 + 50);
    setMeme(canvas.toDataURL());
  };

  return (
    <div>
      <form>
        <input value={image} onChange={(e) => setImage(e.target.value)} />
        <input value={topText} onChange={(e) => setTopText(e.target.value)} />
        <input value={bottomText} onChange={(e) => setBottomText(e.target.value)} />
        <button onClick={handleGenerateMeme}>Generate Meme</button>
      </form>
      <img src={meme} alt="Generated Meme" />
    </div>
  );
}

export default MemeGenerator;

Explanation

The code defines a MemeGenerator component that utilizes the useState hook to initialize state variables for the meme image, top text, bottom text, and generated meme. The handleGenerateMeme function generates the meme by drawing the image and text on a canvas element. The component renders a form to input custom text and select a meme image, and a button to generate the meme. The generated meme is then rendered as an image.

Possible Future Enhancements

  • Add more meme image options.

  • Implement a preview mode to display the generated meme in a separate container.

  • Use a library like Konva to generate more complex memes.

  • Integrate with a social media app to share generated memes.

Previous8 - Dynamically Generated Text ArtNext10 - "What Should I Eat?" Random Recipe Generator

Last updated 10 months ago