import { Form, useFetcher, useLoaderData } from "react-router-dom"; import { getContact, updateContact } from "../contacts"; export async function action({ request, params }) { const formData = await request.formData(); return updateContact(params.contactId, { favorite: formData.get("favorite") === "true", }); } export async function loader({ params }) { const contact = await getContact(params.contactId); if (!contact) { throw new Response("", { status: 404, statusText: "Not Found", }); } return { contact }; } export default function Contact() { const { contact } = useLoaderData(); return (

{contact.first || contact.last ? ( <> {contact.first} {contact.last} ) : ( No Name )}{" "}

{contact.twitter && (

{contact.twitter}

)} {contact.notes &&

{contact.notes}

}
{ if (!confirm("Please confirm you want to delete this record.")) { event.preventDefault(); } }} >
); } function Favorite({ contact }) { const fetcher = useFetcher(); const favorite = fetcher.formData ? fetcher.formData.get("favorite") === "true" : contact.favorite; return ( ); }