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

home2 게시판 React 게시판 탭 애니메이션 작동이 안됩니다...

탭 애니메이션 작동이 안됩니다...

10 글 보임 - 1 에서 10 까지 (총 14 중에서)
  • 글쓴이
  • #13686

    이지은
    참가자

    똑같이 따라했는데 왜인지 되지가 않네유...아랫분과 비슷한 경우인데

    Warning: findDOMNode is deprecated in StrictMode. findDOMNode was passed an instance of Transition which is inside StrictMode. Instead, add a ref directly to the element you want to reference.

    이런 에러가 뜨고 transition 작동이 안되어서,

     

    https://github.com/reactjs/react-transition-group/issues/668 여기를 참조해서

    코딩을 해봤는데 워닝은 없어지지만 그래도 여전히 transition이 작동이 안됩니다.

    뭐가 잘못된건지 잘 모르겠네요...

     

    저는 코딩을 이렇게 했습니다

    ( state 만들기 )

    // clickTab
        let [clickTab, clickTabChange] = useState(0); // --> 현재 누른 번호

    // aniSwitch
    let [aniSwitch, aniSwitchChange] = useState(false);

     

    ( 이건 오류를 없애기 위해 선언해야한다고 해서 )

    const nodeRef = React.useRef(null);

     

    ( tab 메뉴 )

    {/* Tab */}
            <Nav className="mt-5" fill variant="tabs" defaultActiveKey="link-0">           <Nav.Item>
                <Nav.Link eventKey="link-0" onClick={()=>{ aniSwitchChange(false); clickTabChange(0); }}>menu0</Nav.Link>
              </Nav.Item>
              <Nav.Item>
                <Nav.Link eventKey="link-1" onClick={()=>{ aniSwitchChange(false); clickTabChange(1); }}>menu1</Nav.Link>
              </Nav.Item>
              <Nav.Item>
                <Nav.Link eventKey="link-2" onClick={()=>{ aniSwitchChange(false); clickTabChange(2); }}>menu2</Nav.Link>
              </Nav.Item>
            </Nav>

     

    ( tabContent  )

    <CSSTransition nodeRef={nodeRef} in={aniSwitch} className="Tab" timeout={500}>
              <div ref={nodeRef}><TabContent clickTab={ clickTab } aniSwitchChange={ aniSwitchChange }></TabContent></div>
            </CSSTransition>

     

    ( tabContent Component )

    function TabContent(props){

      useEffect(()=>{
        props.aniSwitchChange(true);
      })

      if(props.clickTab===0){
        return <div>0번입니다.</div>
      } else if(props.clickTab===1){
        return <div>1번입니다.</div>
      } else{
        return <div>2번입니다.</div>
      }
    }

     

    ( detail.scss )

    // Tab animation

        // enter --> animation 시작할 때 적용
        .Tab-enter{
            opacity:0;
        }

        // enter-active --> animation 동작할 때 적용
        .Tab-enter-active{
            opacity:1;
            color:Red;
            transition: all 500ms;
        }

     

    대체 왜 안되는 걸까요??ㅜㅜ 원래 애니메이션라이브러리는

    리액트 부트스트랩이랑 같이 쓰는 게 아닌건가요??

    #13691

    codingapple
    키 마스터

    className 말고 classNames 를 써봅시다 

    #13692

    이지은
    참가자

    classNames = Tab으로 고쳤습니다... 안되네용 ㅜ

    #13695

    codingapple
    키 마스터

    클래스명들을 Tab 말고 전부 소문자로 바꾸고 

    scss 파일 말고 css 파일을 한번 이용해봅시다 

    #13698

    이지은
    참가자

    클래스명 tab으로 바꿔보고 css 파일로도 옯겨봤는데 되지가 안네요 ㅜㅜ 

    #13699

    codingapple
    키 마스터

    css 파일에 작성한 클래스명도 소문자 .tab으로 시작하는거 맞겠죠 

    #13733

    이지은
    참가자

    넹넹

        // Tab animation

        // enter --> animation 시작할 때 적용
        .tab-enter{
            opacity:0;
        }

        // enter-active --> animation 동작할 때 적용
        .tab-enter-active{
            opacity:1;
        }

     

    이렇게 다시 고쳤습니다!

    animation 라이브러리 현직에서 많이 사용하는 편인가요??

    #13739

    codingapple
    키 마스터

    필요하면 써야죠

    transition이 빠진것 같긴 한데

    node modules 폴더 빼고 프로젝트 파일을 전부 하단 이메일로 보내주시거나 깃헙에 올려서 링크를 보내주십시오 

     

    #13742

    노재근
    참가자

    답지라서 삭제될수도 있긴 한데 일단 올려봐드림

     

    왼쪽이 애니메이션 코드 추가 전, 오른쪽이 추가 후 입니다.

    빨간색 라인은 수정된거구요 빗금이랑 파란색은 없던자리에 추가된거에요.

    이렇게 하면 Warning이 뜨긴 해도 되긴 하는데 일단 성공 하시면 바로 아랫 질문 보시면 해결된거 있어요

    그리고.. 깃헙 쓰세요 깃헙!

    ↓ JS 1번

    add animation in js

    ↓ JS 이어서

     

    SCSS

    #13810

    이지은
    참가자

    감사합니다... !! 다시 확인 해보께요

10 글 보임 - 1 에서 10 까지 (총 14 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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