• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 React 게시판 개인프로젝트 중 dispatch 질문

개인프로젝트 중 dispatch 질문

6 글 보임 - 1 에서 6 까지 (총 6 중에서)
  • 글쓴이
  • #115152

    황승현
    참가자
          onClick={() => {
            if (누구차례냐 == 1 && 바둑판[props.i][props.j] == "black-border") {
              // 검정색 돌 놓을 차례이면
              dispatch(바둑판변경([props.i, props.j, "black"])); //놓을 수 있는 자리 중 하나 누르면 검정색으로 변경
              dispatch(후보지우기()); /**만들어놓은 가이드 지우기 */
              dispatch(검정색으로뒤집기([props.i, props.j]));
              dispatch(오른쪽후보만들기(["white", "black"])); //
              dispatch(왼쪽후보만들기(["white", "black"])); // 흰색 돌
              dispatch(위쪽후보만들기(["white", "black"])); // 놓을 수
              dispatch(아래쪽후보만들기(["white", "black"])); // 있는
              dispatch(왼쪽위후보만들기(["white", "black"])); // 가이드
              dispatch(오른쪽위후보만들기(["white", "black"])); // (white-border)
              dispatch(왼쪽아래후보만들기(["white", "black"])); // 만들기
              dispatch(오른쪽아래후보만들기(["white", "black"])); //
              for (var i = 0; i < 8; i++) {
                for (var j = 0; j < 8; j++) {
                  if (바둑판[i][j] == "white-border") {
                    // 흰색 돌 놓을 수 있는 가이드가 하나 이상 생성되었다면
                    dispatch(차례변경()); // 상대방에게 차례 넘기기 ('누구차례냐' 1에서 2로 변경)
                    console.log("차례변경했음");
                    return 0;
                  }
                }
              }
              dispatch(후보지우기());
              dispatch(오른쪽후보만들기(["black", "white"])); //
              dispatch(왼쪽후보만들기(["black", "white"])); // 검은색 돌
              dispatch(위쪽후보만들기(["black", "white"])); // 놓을 수
              dispatch(아래쪽후보만들기(["black", "white"])); // 있는
              dispatch(왼쪽위후보만들기(["black", "white"])); // 가이드
              dispatch(오른쪽위후보만들기(["black", "white"])); // (black-border)
              dispatch(왼쪽아래후보만들기(["black", "white"])); // 만들기
              dispatch(오른쪽아래후보만들기(["black", "white"])); //
              console.log(누구차례냐);
              return 0;
            } else if (
              누구차례냐 == 2 &&
              바둑판[props.i][props.j] == "white-border"
            ) {
              // 흰색 돌 놓을 차례이면
              dispatch(바둑판변경([props.i, props.j, "white"])); //놓을 수 있는 자리 중 하나 누르면 흰색으로 변경
              dispatch(후보지우기()); /**만들어놓은 가이드 지우기 */
              dispatch(흰색으로뒤집기([props.i, props.j]));
              dispatch(오른쪽후보만들기(["black", "white"])); //
              dispatch(왼쪽후보만들기(["black", "white"])); // 검은색 돌
              dispatch(위쪽후보만들기(["black", "white"])); // 놓을 수
              dispatch(아래쪽후보만들기(["black", "white"])); // 있는
              dispatch(왼쪽위후보만들기(["black", "white"])); // 가이드
              dispatch(오른쪽위후보만들기(["black", "white"])); // 만들기
              dispatch(왼쪽아래후보만들기(["black", "white"])); //
              dispatch(오른쪽아래후보만들기(["black", "white"])); //
              for (var i = 0; i < 8; i++) {
                for (var j = 0; j < 8; j++) {
                  if (바둑판[i][j] == "black-border") {
                    // 검은색 돌 놓을 수 있는 가이드가 하나 이상 생성되었다면
                    dispatch(차례변경()); // 상대방에게 차례 넘기기 ('누구차례냐' 2에서 1로 변경)
                    console.log("차례변경했음");
                    return 0;
                  }
                }
              }
              dispatch(후보지우기());
              dispatch(오른쪽후보만들기(["white", "black"])); //
              dispatch(왼쪽후보만들기(["white", "black"])); // 흰색 돌
              dispatch(위쪽후보만들기(["white", "black"])); // 놓을 수
              dispatch(아래쪽후보만들기(["white", "black"])); // 있는
              dispatch(왼쪽위후보만들기(["white", "black"])); // 가이드
              dispatch(오른쪽위후보만들기(["white", "black"])); // 만들기
              dispatch(왼쪽아래후보만들기(["white", "black"])); //
              dispatch(오른쪽아래후보만들기(["white", "black"])); //
              console.log(누구차례냐);
              return 0;
            }
          }}
    오델로라는 보드게임 만들고 있습니다. 서로 돌 하나씩 번갈아가며 보드에 놓으면서 끝날 때 내가 놓은 돌 색이 많으면 이기는 게임인데요, 게임이 어느정도 경과되고 돌을 놓다 상대방이 놓을 돌이 없으면 내가 한번 더 놓을 수 있는데 그 기능 구현이 안되네요. 첫번째 if문에서 '~~후보만들기'함수로 바둑판 배열 중 몇 개를 white-border로 바꾸었는데 for문에서 함수가 종료되지 않네요. dispatch로 바꾸어도 즉각 반응이 안되는거 같은데 어떻게 해결해야하나요?
     
    #115207

    codingapple
    키 마스터
    변수가 의도대로 바뀌지 않는 곳이 어디있는지 출력부터 해보면 됩니다
    #115243

    황승현
    참가자
    죄송해요 주절주절 적다보니 너무 길어졌네요. 궁금한건 dispatch(변경함수)로 변수를 바꾸면 다음줄부터 바로 반영되어 바뀌나요, 딜레이가 있나요?
    #115272

    codingapple
    키 마스터
    dispatch는 한줄한줄 순서대로 처리될걸요
    #115273

    황승현
    참가자
    console.log로 여러 부분에서 출력해봤는데 예를 들어 어떤 부분을 클릭하면 dispatch(변경함수())가 실행되게 코드를 짰다면 dispatch(변경함수())는 onclick이 끝나고 redux에 전송되어 변경이 적용되는거 같은데 맞나요?
    console.log로 state를 출력하고 dispatch(변경함수())로 state 변경하고 console.log로 다시 출력해봐도 같은 값이 나오네요. onclick함수를 다시 실행하면 변경함수로 의도한대로 적용되어 출력되네요.
    #115343

    codingapple
    키 마스터
    dispatch보다 console.log가 먼저 실행되어서 그런듯요
    state변동사항 출력하려면 useEffect같은거 안에서 출력해봅시다
6 글 보임 - 1 에서 6 까지 (총 6 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠