From add285da04a6e0ea8ceab0bf73fb3beb56ec442e Mon Sep 17 00:00:00 2001 From: icurfer Date: Sun, 25 May 2025 01:12:01 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=EB=AC=BC=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Board/PostForm.js | 98 ++++++++++++++++++++++++ src/pages/BoardsPage copy.js | 72 +++++++++++++++++ src/pages/BoardsPage.js | 74 +++++++++++++----- src/pages/{Board.js => _unused_Board.js} | 0 version | 2 +- 5 files changed, 224 insertions(+), 22 deletions(-) create mode 100644 src/components/Board/PostForm.js create mode 100644 src/pages/BoardsPage copy.js rename src/pages/{Board.js => _unused_Board.js} (100%) 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 ( +
+

📝 새 게시글 작성

+
+ +