"use client"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { MarkdownPreview } from "@/components/MarkdownPreview"; import { normalizeImageUrl } from "@/lib/normalize"; import { Post } from "@/types/post"; export function EditPostForm({ post }: { post: Post }) { const router = useRouter(); const [title, setTitle] = useState(post.title); const [cover, setCover] = useState(post.cover || ""); const [tags, setTags] = useState(post.tags ? post.tags.join(", ") : ""); const [markdown, setMarkdown] = useState(post.markdown); const [loading, setLoading] = useState(false); const [preview, setPreview] = useState(false); async function handleSave(e: React.FormEvent) { e.preventDefault(); setLoading(true); try { const normalizedCover = normalizeImageUrl(cover); const res = await fetch(`/api/posts/${post.slug}`, { method: "PATCH", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ title, markdown, cover: normalizedCover || null, tags: Array.from( new Set( tags .split(",") .map((item) => item.trim()) .filter(Boolean) ) ) }) }); if (!res.ok) { const data = await res.json().catch(() => ({})); alert(data.error ? JSON.stringify(data.error) : "保存失败"); return; } router.push("/admin"); router.refresh(); } finally { setLoading(false); } } return (

编辑内容

你只能修改自己发布的内容。

正文
{!preview ? (