10 |
Oops!
11 |
Sorry, an unexpected error has occurred.
12 |
13 | {error.statusText || error.message}
14 |
15 |
16 | );
17 | }
18 |
--------------------------------------------------------------------------------
/app/root.tsx:
--------------------------------------------------------------------------------
1 | import { json, LoaderArgs, redirect } from "@remix-run/node";
2 | import {
3 | Form,
4 | Links,
5 | LiveReload,
6 | NavLink,
7 | Outlet,
8 | Scripts,
9 | useLoaderData,
10 | useSubmit,
11 | useTransition as useNavigation,
12 | } from "@remix-run/react";
13 | import { useEffect } from "react";
14 |
15 | import { createContact, getContacts } from "~/lib/contact";
16 | import ErrorPage from "~/lib/error-page";
17 | import styles from "~/index.css";
18 |
19 | export function links() {
20 | return [{ rel: "stylesheet", href: styles }];
21 | }
22 |
23 | export async function loader({ request }: LoaderArgs) {
24 | const url = new URL(request.url);
25 | const q = url.searchParams.get("q")!;
26 | const contacts = await getContacts(q);
27 | return json({ contacts, q });
28 | }
29 |
30 | export async function action() {
31 | const contact = await createContact();
32 | return redirect(`/contacts/${contact.id}/edit`);
33 | }
34 |
35 | export default function Root() {
36 | const { contacts, q } = useLoaderData