Overnap

리액트 훅의 dependency 해소

...@@ -4,7 +4,7 @@ import SocketContext from '../../contexts/SocketContext'; ...@@ -4,7 +4,7 @@ import SocketContext from '../../contexts/SocketContext';
4 import { MessageType, RawMessage } from '../common/types'; 4 import { MessageType, RawMessage } from '../common/types';
5 import { Canvas } from './Canvas'; 5 import { Canvas } from './Canvas';
6 import { RoundInfo } from './RoundInfo'; 6 import { RoundInfo } from './RoundInfo';
7 -import { Role, RoundData } from './types'; 7 +import { RoundData } from './types';
8 import { Word } from './Word'; 8 import { Word } from './Word';
9 9
10 interface GameBoardLocation { 10 interface GameBoardLocation {
...@@ -37,8 +37,8 @@ export const GameBoard: React.FC<GameBoardProps> = ({ isInGame }) => { ...@@ -37,8 +37,8 @@ export const GameBoard: React.FC<GameBoardProps> = ({ isInGame }) => {
37 setWords([]); 37 setWords([]);
38 38
39 const data = rawMessage.message as RoundData; 39 const data = rawMessage.message as RoundData;
40 - console.log('테스트 location ', location.state.username); 40 + // console.log(location.state.username);
41 - console.log('테스트 rolse ', data.roles); 41 + // console.log(data.roles);
42 const index = data.roles.findIndex(x => x.username === location.state.username); 42 const index = data.roles.findIndex(x => x.username === location.state.username);
43 setIsDrawer(data.roles[index].role === 'drawer'); 43 setIsDrawer(data.roles[index].role === 'drawer');
44 setWordChosen(''); 44 setWordChosen('');
...@@ -64,18 +64,24 @@ export const GameBoard: React.FC<GameBoardProps> = ({ isInGame }) => { ...@@ -64,18 +64,24 @@ export const GameBoard: React.FC<GameBoardProps> = ({ isInGame }) => {
64 64
65 useEffect(() => { 65 useEffect(() => {
66 socket.on('msg', handleStart); 66 socket.on('msg', handleStart);
67 - socket.on('msg', handleGetWordLength);
68 socket.on('msg', handleWordSet); 67 socket.on('msg', handleWordSet);
69 socket.on('msg', handleAnswer); 68 socket.on('msg', handleAnswer);
70 69
71 return () => { 70 return () => {
72 socket.off('msg', handleStart); 71 socket.off('msg', handleStart);
73 - socket.off('msg', handleGetWordLength);
74 socket.off('msg', handleWordSet); 72 socket.off('msg', handleWordSet);
75 socket.off('msg', handleAnswer); 73 socket.off('msg', handleAnswer);
76 } 74 }
77 }, []); 75 }, []);
78 76
77 + useEffect(() => {
78 + socket.on('msg', handleGetWordLength);
79 +
80 + return () => {
81 + socket.off('msg', handleGetWordLength);
82 + }
83 + }, [wordChosen]);
84 +
79 return ( 85 return (
80 <div className={`w-auto ${isInGame ? '' : 'hidden'}`}> 86 <div className={`w-auto ${isInGame ? '' : 'hidden'}`}>
81 <div className='w-full flex flex-col justify-center items-center'> 87 <div className='w-full flex flex-col justify-center items-center'>
......
...@@ -28,7 +28,7 @@ export const Ready: React.FC<ReadyProps> = ({ users }) => { ...@@ -28,7 +28,7 @@ export const Ready: React.FC<ReadyProps> = ({ users }) => {
28 var test = users.length > 1; 28 var test = users.length > 1;
29 users.forEach(x => test = test && (x.ready || x.admin)); 29 users.forEach(x => test = test && (x.ready || x.admin));
30 setIsAllReady(test); 30 setIsAllReady(test);
31 - }); 31 + }, [users, location.state.username]);
32 32
33 const handleReady = useCallback(() => { 33 const handleReady = useCallback(() => {
34 if (isAdmin && isAllReady) { 34 if (isAdmin && isAllReady) {
......