diff --git a/src/components/Board/PostForm.js b/src/components/Board/PostForm.js new file mode 100644 index 0000000..52eab7e --- /dev/null +++ b/src/components/Board/PostForm.js @@ -0,0 +1,98 @@ +// src/components/Board/PostForm.js +import React, { useState } from "react"; +import { createPost } from "../../api/boardApi"; + +const PostForm = ({ boardSlug, onClose, onCreated }) => { + const [form, setForm] = useState({ + title: "", + content: "", + tags: "", + }); + + const handleChange = (e) => { + setForm({ ...form, [e.target.name]: e.target.value }); + }; + + const handleSubmit = async (e) => { + e.preventDefault(); + + if (!boardSlug) { + alert("⚠ 게시판이 선택되지 않았습니다."); + return; + } + + const payload = { + title: form.title, + content: form.content, + tags: form.tags + .split(",") + .map((tag) => tag.trim()) + .filter((tag) => tag !== ""), + }; + + console.log("✅ 요청 대상 boardSlug:", boardSlug); + console.log("✅ 전송할 payload:", payload); + + try { + await createPost(boardSlug, payload); + alert("✅ 게시글이 등록되었습니다."); + setForm({ title: "", content: "", tags: "" }); + onCreated(); + onClose(); + } catch (err) { + console.error("❌ 게시글 등록 실패", err); + console.log("🚨 서버 응답 내용:", err.response?.data); + alert("등록 실패: " + (err.response?.data?.detail || err.message)); + } + }; + + return ( +
+

📝 새 게시글 작성

+
+ +