inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

웹 게임을 만들며 배우는 React

7-3. action 만들어 dispatch 하기

안녕하세요 코드 질문이요

197

dsfsdf

작성한 질문수 19

0

tictacto 컴포넌트
 
const reducer = (state, action) => {
  switch (action.type) {
    case CLICK_CELL: {
      const tableData = [...state.tableData];
      tableData[action.rowIndex] = [...tableData[action.rowIndex]];
      tableData[action.rowIndex][action.cellIndex] = state.turn;
      return {
        ...state,
        tableData,
      };
    }
    case CHANGE_TURN: {
      return {
        ...state,
        turn: state.turn === "O" ? "X" : "O",
      };
    }
    case CHECK_WINNER: {
      const { tableData, turn } = state;
      if (
        tableData[action.row][0] === turn &&
        tableData[action.row][1] === turn &&
        tableData[action.row][2] === turn
      ) {
        return { ...state, winner: turn };
      }
      if (
        tableData[0][action.cell] === turn &&
        tableData[1][action.cell] === turn &&
        tableData[2][action.cell] === turn
      ) {
        return { ...state, winner: turn };
      }
      if (
        tableData[0][0] === turn &&
        tableData[1][1] === turn &&
        tableData[2][0] === turn
      ) {
        return { ...state, winner: turn };
      }
      if (
        tableData[0][2] === turn &&
        tableData[1][1] === turn &&
        tableData[2][0] === turn
      ) {
        return { ...state, winner: turn };
      }
    }
  }
};
td 컴포넌트 에서는
dispatch({ type: CHECK_WINNER, row: rowIndex, cell: cellIndex });
이런식으로 주고 승자 판단을 해봤는데요. 이렇게 해도 크게 문제가
없는건가요?

react

답변 1

0

제로초(조현영)

네 코드가 어떻든 잘 돌아간다면 일차적으로는 문제 없습니다.

npm run dev 실행 시 포트가 안뜨는 문제

0

241

2

timeouts.current를 useEffect 의 input값으로 넣었을때

0

98

2

렌더링 테스트 코드 (Hooks)

0

93

1

Cannot find package 'react-refesh' 이런 에러 뜨시는 분들 보세요.

0

167

1

해당 에러 뜨는 분들 보세요. "Uncaught TypeError: ReactDom.createRoot is not a function"

1

209

1

강사님 레포지토리에서 코드 복사 시 master 브랜치 말고 react18 브랜치꺼 복붙하세요ㅠㅠ

0

108

1

useMemo와 useCallback 사용 시기

0

222

2

onRightClickTd가 작동을 하지 않습니다.

0

237

1

action.type 불러오는 방식

0

226

2

onClickRedo 질문

0

177

1

const Try = require(./Try) 빨간줄

0

262

1

npx webpack 실행시

0

324

1

지뢰찾기 강좌에서 빈칸들 한번에 열기 파트에서 여쭤보고싶은부분이 있어서 글 올립니다.

0

243

1

강좌에서 다루지 않은 기능들은 어떻게 학습하면 좋을까요?

0

319

1

react devtool이 enable 않됩니다.

0

548

2

React 랜더링이 되지 않습니다.

0

422

2

비동기로 동작하는 setState에 대해서

0

340

1

npm run dev 할 때 에러발생

0

497

2

memo, PureComponenet, shouldComponentUpdate 관련 질문

0

211

1

devMiddleware의 필요성

0

359

1

리액트에서 화살표 함수를 사용해야하는 이유

0

948

2

path.join관련질문

0

288

2

2-9. 웹팩 데브 서버와 핫 리로딩 설치과정 시 에러

0

384

1

next.js 에서 이와 비슷한 예제를 돌리고있는데 react랑 달라서 질문 드립니

1

503

4