nextjs-cloud-run/app/page.tsx (37 lines of code) (raw):
'use client'
import { useEffect, useState } from "react";
import { addFavoriteThing, getFavoriteThings } from "./actions";
export default function Home() {
const [newFavoriteThing, setNewFavoriteThing] = useState('');
const [favoriteThings, setFavoriteThings] = useState<string[]>([]);
async function getThings() {
const updatedListOfThings = await getFavoriteThings();
setFavoriteThings(updatedListOfThings);
}
useEffect(() => {
getThings();
}, []);
async function addThing() {
await addFavoriteThing(newFavoriteThing);
setNewFavoriteThing('');
await getThings();
}
return (
<main>
<h1>Hello Martin!</h1>
<h2>Luke's Favorite Things</h2>
<input
placeholder="New Favorite Thing"
value={newFavoriteThing}
onChange={(e) => setNewFavoriteThing(e.target.value)}
className="border-black border-2"
/>
<button onClick={addThing} className="border-black border-2 hover:text-white hover:bg-black rounded">
Add Favorite Thing
</button>
<ul className="list-disc list-inside">
{favoriteThings.map(function (thing) {
return <li key={thing}>{thing}</li>
})}
</ul>
</main>
);
}