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

home2 게시판 React 게시판 usestate 관련해서 질문드립니다.

usestate 관련해서 질문드립니다.

  • 이 주제에는 1개 답변, 2명 참여가 있으며 codingapple3 년 전에 전에 마지막으로 업데이트했습니다.
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #40943

    이동주
    참가자
    안녕하세요 useState 공부하면서 궁금한 부분이 있어 질문드립니다.
    useState가 나중에 처리되어 콘솔이 찍히는것이 하나씩 밀리는 현상에 대해 강의시간에 배웠는데요
    추가적으로 더 궁금하여 공부하면서 의문점이 생겨 질문드립니다.
    
    아래와 같은 코드에서
    useState를 사용해  isPlay를 false로 초기화 시키고
    button을 클릭하면 isPlayVideo 함수가 실행되고
    그 안에서 setIsPlay를 통해 false이면 true로 true이면 false로 변환시키도록 하였습니다.
    또한 state를 변환 후 if 문을 타고 들어가게 되어 isPlay가 true이면 'true입니다'를 출력하고
    isPlay가 false이면 'false입니다'를 출력하도록 하였습니다.
    제가 예상했던 결과는
    isPlay의 초기값이  false이고 버튼을 클릭하면 isPlayVideo함수가 실행되어
    setIsPlay에 의해  true로 변환되고 변환 된 후 if문을 타게 되면 'true입니다'가 출력되고
    버튼의 내부 텍스트는 '정지'로 변할 것을 예상하였습니다.
    하지만 콘솔 창을 보면 'false입니다.'가 출력되네요....
    setState함수가 비동기 처리가 되어 if문을 타기전에 true/false 변환된것이 반영이 안되는 것인가요?
    그렇다면 제가 원하던 것처럼 구현하기 위해 setState함수를 실행 후 'true입니다'를 출력할 수 있는 방법이 있을까요?
    ------------------------아래는 예시 코드 ---------------------------------------------
    function App() {
      const [isPlay, setIsPlay] = useState(false)
      const isPlayVideo = () => {
        setIsPlay(!isPlay)
        if (isPlay) {
          console.log('true입니다.')
        } else {
          console.log('false입니다.')
        }
      return (
        <div className="App">
          {
              isPlay===true ? <button onClick={isPlayVideo}>정지</button> : <button onClick={isPlayVideo}>재생</button>
            }
      </div>
     
    #40951

    codingapple
    키 마스터
    setIsPlay는 늦게 처리되어서 밑에있는 if부터 먼저 실행해서 그럴 뿐입니다 
    useEffect써서 state변경되면 뭐 실행해달라고 코드짜면 됩니다
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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