강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

dsfsdf님의 프로필 이미지
dsfsdf

작성한 질문수

웹 게임을 만들며 배우는 React

7-3. action 만들어 dispatch 하기

안녕하세요 코드 질문이요

작성

·

191

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 });
이런식으로 주고 승자 판단을 해봤는데요. 이렇게 해도 크게 문제가
없는건가요?

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

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

dsfsdf님의 프로필 이미지
dsfsdf

작성한 질문수

질문하기