Skip to content

Instantly share code, notes, and snippets.

@Tribhuwan-Joshi
Created November 20, 2022 12:37
Show Gist options
  • Select an option

  • Save Tribhuwan-Joshi/49e9f61d61f2614e771ca62466a4a64b to your computer and use it in GitHub Desktop.

Select an option

Save Tribhuwan-Joshi/49e9f61d61f2614e771ca62466a4a64b to your computer and use it in GitHub Desktop.
import React from "react";
export default function Meme() {
const [meme, setMeme] = React.useState({
topText: "",
bottomText: "",
randomImage: "http://i.imgflip.com/1bij.jpg",
});
const [allMemes, setAllMemes] = React.useState([]);
React.useEffect(() => {
fetch("https://api.imgflip.com/get_memes")
.then((res) => res.json())
.then((data) => setAllMemes(data.data.memes));
}, []);
function getMemeImage() {
const randomNumber = Math.floor(Math.random() * allMemes.length);
const url = allMemes[randomNumber].url;
setMeme((prevMeme) => ({
...prevMeme,
randomImage: url,
}));
}
function handleChange(event) {
const { name, value } = event.target;
setMeme((prevMeme) => ({
...prevMeme,
[name]: value,
}));
}
return (
<main>
<div className="form">
<input
type="text"
placeholder="Top text"
className="form--input"
name="topText"
value={meme.topText}
onChange={handleChange}
/>
<input
type="text"
placeholder="Bottom text"
className="form--input"
name="bottomText"
value={meme.bottomText}
onChange={handleChange}
/>
<button className="form--button" onClick={getMemeImage}>
Get a new meme image 🖼
</button>
</div>
<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>
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment