Skip to content

Commit a768058

Browse files
committed
fix: game-setting 페이지 버그 수정
- game-ready 페이지에서 뒤로가면 상태값으로 인해 game-ready 페이지에서 못 벗어나는 버그 수정
1 parent c1a332e commit a768058

File tree

2 files changed

+15
-16
lines changed

2 files changed

+15
-16
lines changed

src/pages/game-ready/GameReady.tsx

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,6 @@ export default function GameReady() {
4242
}, [roomChiefModal, navigate]);
4343

4444
useEffect(() => {
45-
setUser((prev: RoomClientProps) => ({
46-
...prev,
47-
roomId: urlRoomId, // urlRoomId 값을 user 상태의 roomId에 갱신
48-
}));
49-
5045
if (!user.nickname || !user.roomId) {
5146
// console.log('nickname이나 roomId가 없습니다.');
5247
return;

src/pages/game-setting/GameSetting.tsx

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import { useEffect, useState } from 'react';
22
import { useNavigate } from 'react-router-dom';
3-
import { useRecoilState, useResetRecoilState } from 'recoil';
3+
import { useResetRecoilState, useSetRecoilState } from 'recoil';
44
import { createRoom } from '../../api/CreateRoom';
55
import MessageModal from '../../components/modal/MessageModal.tsx';
66
import useMessages from '../../hooks/useMessage';
77
import { userState } from '../../recoil/atoms/userState';
8+
import WebSocketManager from '../../services/WebSocketManager.ts';
9+
import { gameState } from '../../recoil/atoms/gameState.ts';
810

911
const GameSetting = () => {
10-
const resetUserState = useResetRecoilState(userState);
1112
const navigate = useNavigate();
1213
const [inputNickname, setInputNickname] = useState<string>('');
1314
const [gameTime, setGameTime] = useState<number>(10);
@@ -19,21 +20,20 @@ const GameSetting = () => {
1920

2021
const { messages, showMessage } = useMessages();
2122

22-
const [user, setUser] = useRecoilState(userState);
23+
const setUser = useSetRecoilState(userState);
24+
const resetUserState = useResetRecoilState(userState);
25+
const resetGameState = useResetRecoilState(gameState);
2326

2427
useEffect(() => {
2528
resetUserState();
29+
resetGameState();
30+
const webSocketManager = WebSocketManager.getInstance();
31+
if (webSocketManager.isConnected()) {
32+
webSocketManager.disconnect();
33+
}
2634
// console.log('Recoil userState 초기화 완료');
2735
}, []);
2836

29-
useEffect(() => {
30-
const roomId = user.roomId;
31-
if (roomId !== null) {
32-
// GameReady 페이지로 이동
33-
navigate(`/game-ready/${roomId}`);
34-
}
35-
}, [user.nickname]);
36-
3737
useEffect(() => {
3838
// 게임 유형이 변경될 때, maxUserCount 초기화
3939
if (gameType === 'TEAM_VS_TEAM') {
@@ -69,6 +69,10 @@ const GameSetting = () => {
6969

7070
// Recoil(userState) 상태에 roomId 업데이트
7171
setUser((prev) => ({ ...prev, nickname: inputNickname, roomId: createdRoomId }));
72+
73+
if (createdRoomId !== null) {
74+
navigate(`/game-ready/${createdRoomId}`);
75+
}
7276
} catch {
7377
// console.error('Error creating room:', error.message);
7478
showMessage('방 생성에 실패했습니다.');

0 commit comments

Comments
 (0)