Skip to content

Commit

Permalink
.
Browse files Browse the repository at this point in the history
  • Loading branch information
mkamran093 committed Aug 7, 2023
1 parent 1e7ce00 commit b0fa59a
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 826 deletions.
10 changes: 3 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
# React + Vite
#Meme Generator

This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.

Currently, two official plugins are available:

- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
A Simple React app to generate meme template where you can add text to it
You can check it here: https://meme-generator-a00b88.netlify.app/
42 changes: 30 additions & 12 deletions components/meme.jsx
Original file line number Diff line number Diff line change
@@ -1,46 +1,64 @@
import React, { useState } from "react";
import memesData from "../memesData";
import React, { useState, useEffect } from "react";

export default function Meme() {
const [meme, setMeme] = useState({
topText: "",
bottomText: "",
randomImage: "https://i.imgflip.com/345v97.jpg",
randomImage: "https://i.imgflip.com/1g8my4.jpg",
});

const [allMemeImages, setAllMemeImages] = useState(memesData);
const [allMemes, setAllMemes] = useState([]);

useEffect(() => {
fetch("https://api.imgflip.com/get_memes")
.then((res) => res.json())
.then((data) => setAllMemes(data.data.memes));
}, []);

function getMemeImage() {
const memesArray = allMemeImages.data.memes;
const randomNumber = Math.floor(Math.random() * memesArray.length);
const url = memesArray[randomNumber].url;
const randomNumber = Math.floor(Math.random() * allMemes.length);
const url = allMemes[randomNumber].url;
setMeme((prevMeme) => ({
...prevMeme,
randomImage: url,
}));
}

function changeHandler(event) {
setMeme((prevMeme) => ({
...prevMeme,
[event.target.name]: event.target.value,
}));
}

return (
<main>
<div className="form">
<input
className="form-input"
placeholder="Top Text"
type="text"
name=""
id=""
name="topText"
value={meme.topText}
onChange={changeHandler}
/>
<input
className="form-input"
placeholder="Bottom Text"
type="text"
name=""
id=""
name="bottomText"
value={meme.bottomText}
onChange={changeHandler}
/>
<button className="form-btn" onClick={getMemeImage}>
Get a new meme image🖼
</button>
</div>
<img src={meme.randomImage} className="meme-image" />
<div className="meme">
<img src={meme.randomImage} className="meme-image" />
<h2 className="meme--text top">{meme.topText}</h2>
<h2 className="meme--text bottom">{meme.bottomText}</h2>
</div>
</main>
);
}
Loading

0 comments on commit b0fa59a

Please sign in to comment.