import { useEffect } from "react"; 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.Response; return json(note); } export default function Note() { const note = useLoaderData(); useEffect(() => { console.log(note); }, []); return (

日记

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

{item.title}

{item.except}

{item.date}

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