From 9edcf539141714241b84562283d83f8321fdc792 Mon Sep 17 00:00:00 2001 From: qiuchenfan <2035024011@qq.com> Date: Fri, 21 Nov 2025 17:51:41 +0800 Subject: [PATCH] =?UTF-8?q?1121=E5=BC=B9=E7=AA=97=E5=88=9D=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../body/PopupfloatingMangement/AddPopup.tsx | 101 ++++++++++++++++++ .../body/PopupfloatingMangement/Popup.tsx | 85 +++++++++++++++ app/components/news/body/Train.tsx | 2 +- app/routes/news.tsx | 4 + 4 files changed, 191 insertions(+), 1 deletion(-) create mode 100644 app/components/news/body/PopupfloatingMangement/AddPopup.tsx create mode 100644 app/components/news/body/PopupfloatingMangement/Popup.tsx diff --git a/app/components/news/body/PopupfloatingMangement/AddPopup.tsx b/app/components/news/body/PopupfloatingMangement/AddPopup.tsx new file mode 100644 index 0000000..d281b0e --- /dev/null +++ b/app/components/news/body/PopupfloatingMangement/AddPopup.tsx @@ -0,0 +1,101 @@ +import React, { useState } from 'react'; +import { usePopupManager } from './Popup'; + +// 单独的“添加飘窗”表单弹窗组件 +const AddPopupForm = () => { + const { addPopup } = usePopupManager(); + const [isOpen, setIsOpen] = useState(false); + const [formData, setFormData] = useState({ + title: '', + description: '', + backgroundImage: '', + }); + + + const handleChange = (e: React.ChangeEvent) => { + const { name, value } = e.target; + setFormData((prev) => ({ ...prev, [name]: value })); + }; + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + if (!formData.title.trim() || !formData.description.trim()) return; + addPopup({ + title: formData.title, + description: formData.description, + backgroundImage: formData.backgroundImage || undefined, + }); + setIsOpen(false); + setFormData({ title: '', description: '', backgroundImage: '' }); + }; + + + return ( + <> + + {isOpen && ( +
+
+ +

添加飘窗

+
+ + +