import { Link, useLoaderData } from "@remix-run/react"; import { json, LoaderFunctionArgs, type MetaFunction } from "@remix-run/node"; import { clsn, siteTitle } from "~/utils"; import { getFirstImage } from "~/utils/note"; export const meta: MetaFunction = () => { return [ { title: siteTitle("日记") }, { name: "description", content: "奇趣保罗的日常笔记" }, ]; }; export async function loader({ request }: LoaderFunctionArgs) { const url = new URL(request.url); const year = url.searchParams.get("year") || new Date().getFullYear(); const page = url.searchParams.get("page") || 1; const note = await fetch(`https://paul.ren/api/note/?page=${page}&year=${year}`).then((res) => res.json()) as API.PageResponse; return json({ note, page }); } export default function Note() { const { note } = useLoaderData(); return (

日记

{note.data.map((item) => { const year = item.date.substring(0, 4); const cover = getFirstImage(item); return (

{item.title}

{item.except}

{item.date}

{cover && (
)} ); })}
); }