diff --git a/src/app/group/[groupId]/actions.ts b/src/app/group/[groupId]/actions.ts new file mode 100644 index 00000000..7826427d --- /dev/null +++ b/src/app/group/[groupId]/actions.ts @@ -0,0 +1,9 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; + +export const revalidateGroupAction = async (groupId: string) => { + // 모임 취소 (useDeleteGroup) Mutation 이후 해당 groupId의 상세 페이지의 RSC 캐싱을 무효 처리함. + // RSC 캐싱을 무효화 해야만, History Back을 통해 재진입하더라도 RSC의 캐싱 데이터를 보여주지 않음. + revalidatePath(`/group/${groupId}`); +}; diff --git a/src/components/pages/group/group-modal/index.tsx b/src/components/pages/group/group-modal/index.tsx index e10b9ae6..93ef49a6 100644 --- a/src/components/pages/group/group-modal/index.tsx +++ b/src/components/pages/group/group-modal/index.tsx @@ -2,6 +2,7 @@ import { useParams, useRouter } from 'next/navigation'; +import { revalidateGroupAction } from '@/app/group/[groupId]/actions'; import { GroupModalApprovalContent } from '@/components/pages/group/group-modal/approval-content'; import { GroupModalCommonContent } from '@/components/pages/group/group-modal/common-content'; import { Toast } from '@/components/ui'; @@ -32,8 +33,8 @@ type Props = BaseProps | KickProps; export const GroupModal = (props: Props) => { const { type } = props; - const { replace } = useRouter(); const { groupId } = useParams() as { groupId: string }; + const { replace } = useRouter(); const { run } = useToast(); const { mutateAsync: attendMutate, isPending: isAttending } = useAttendGroup({ groupId }); @@ -60,6 +61,7 @@ export const GroupModal = (props: Props) => { leave: () => leaveMutate(), delete: async () => { await deleteMutate(); + await revalidateGroupAction(groupId); replace('/'); }, kick: () => kickMutate(),