From a9c514f664cc83e6f3c6cc53c06568430faf2518 Mon Sep 17 00:00:00 2001 From: lafay <2021211506@stu.hit.edu.cn> Date: Wed, 18 Mar 2026 21:09:55 +0800 Subject: [PATCH] fix(post): prevent duplicate submission and fix navigation after posting - add guard clause to prevent duplicate clicks when posting is in progress - replace navigation.goBack() with navigation.reset to Main screen for cleaner navigation stack after post creation, update, and voting post submission --- src/screens/create/CreatePostScreen.tsx | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/screens/create/CreatePostScreen.tsx b/src/screens/create/CreatePostScreen.tsx index b507851..f622470 100644 --- a/src/screens/create/CreatePostScreen.tsx +++ b/src/screens/create/CreatePostScreen.tsx @@ -334,6 +334,9 @@ export const CreatePostScreen: React.FC = (props) => { // 发布帖子 const handlePost = async () => { + // 防止重复点击 + if (posting) return; + if (!content.trim()) { Alert.alert('错误', '请输入帖子内容'); return; @@ -373,7 +376,10 @@ export const CreatePostScreen: React.FC = (props) => { message: '投票帖已提交,内容审核中,稍后展示', duration: 2600, }); - navigation.goBack(); + navigation.reset({ + index: 0, + routes: [{ name: 'Main' }], + }); } else { if (isEditMode && editPostID) { const updated = await postService.updatePost(editPostID, { @@ -390,7 +396,10 @@ export const CreatePostScreen: React.FC = (props) => { message: '帖子内容已更新', duration: 2200, }); - navigation.goBack(); + navigation.reset({ + index: 0, + routes: [{ name: 'Main' }], + }); } else { // 创建普通帖子 await postService.createPost({ @@ -404,7 +413,10 @@ export const CreatePostScreen: React.FC = (props) => { message: '帖子已提交,内容审核中,稍后展示', duration: 2600, }); - navigation.goBack(); + navigation.reset({ + index: 0, + routes: [{ name: 'Main' }], + }); } } } catch (error) {