inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

3D리플릿 만들기 - 인터랙티브 웹 프로젝트

선생님 질문있습니다 이 강의를 리액트환경에서 적용하고싶은데요,

288

반가우면반갑다고해

작성한 질문수 142

0

그럴경우 useEffect 안에서 함수 처리를 해줘야할까요? 예를들어 이런식으로?

useEffect(() => {
    const leaflet = document.querySelector('.leaflet');
    const pageElems = document.querySelectorAll('.page');
    let pageCount = 0;

    function getTarget(elemclassName) {
      while (!elem.classList.contains(className)) {
        elem = elem.parentNode;

        if (elem.nodeName === 'BODY') {
          elem = null;
          return;
        }
      }

      return elem;
    }

    function closeLeaflet() {
      pageCount = 0;
      document.body.classList.remove('leaflet-opened');
      // 펼쳐졌을때 맨 오른쪽 페이지 닫기
      pageElems[2].classList.remove('page-flipped');

      setTimeout(() => {
        // 이후 맨 왼쪽 페이지 닫기
        pageElems[0].classList.remove('page-flipped');
      }, 500);
    }

    leaflet.addEventListener('click', (e=> {
      let pageElem = getTarget(e.target'page');
      if (pageElem) {
        pageElem.classList.add('page-flipped');
        pageCount++;

        if (pageCount === 2) {
          document.body.classList.add('leaflet-opened');
        }
      }

      // let closeBtnElem = getTarget(e.target, 'close-btn');
      // if (closeBtnElem) {
      //   closeLeaflet();
      //   zoomOut();
      // }

      // let menuItemElem = getTarget(e.target, 'menu-item');
      // if (menuItemElem) {
      //   zoomIn(menuItemElem);
      // }

      // let backBtn = getTarget(e.target, 'back-btn');
      // if (backBtn) {
      //   zoomOut();
      // }
    });
 }, []);

HTML/CSS javascript 인터랙티브-웹

답변 1

2

1분코딩

이렇게 아예 통째로 넣기 보다는, 리액트 개발방식에 맞추어 부분부분을 컴포넌트화 해주시는게 좋습니다.
전체 구조 자체를 변경해야하는 부분이라 간단하게 설명하기가 어려운데, 언제 유튜브나 추가 강의를 통해서 리액트를 이용해서 인터랙션을 구현하는 것을 영상으로 한번 만들어 보겠습니다^^

0

반가우면반갑다고해

선생님 오랜만에 찾아뵈었습니다.
혹시 유튜브나 추가강의를 통해서 리액트를 통해 인터랙션을 구현하는 영상 올리신적이있으시다면 링크좀 부탁드려도될까요?ㅠㅠ

프론트엔드 학습 수준 문의

0

8

1

선생님 각 강좌마다 예시로 보여주시는 웹페이지들은 어디서

0

9

1

퍼플렉시티 최소 결제단위 50달러로 바뀐 것 같습니다.

0

29

2

리액트 챕터별 코드에서 eslint 설정파일이 없어요

0

34

2

claude plugin 방법 자세히 부탁드려요

0

33

2

transform-style: preserve-3d; 를 추가하면

0

47

1

Babel의 사용법 아래 링크의 영상이 비공개 동영상이라고 뜹니다.

0

115

1

페이지 클래스리스트 제거 해줬을때

0

91

0

페이지를 클릭할 때 Uncaught TypeError: Cannot read properties of undefined (reading 'contains') 에러가 뜹니다.

0

1044

1

질문 있습니다ㅠ.ㅠ..

0

409

1

클릭 시 자꾸 page element만 인식됩니다.

0

239

1

가운데 페이지만 줌인이 됩니다

0

267

1

body에 perspective를 주면 갑자기 html과 body 높이가 0이 됩니다

0

401

1

줌인 상태일 때

0

265

1

이벤트 위임 방식 질문

0

228

1

이사람 누군지 아세요..?

3

420

1

질문있습니다.

0

210

1

선생님 질문잇습니다. ㅠ

0

270

1

줌인이 왜 안되는지를 모르겠어요..

1

274

1

질문이 있어요

1

248

1

질문 있습니다.

0

374

2

선생님 질문 있습니다!

1

268

2

쌤 화면 크기 줄엿을때 글자들 삐져나오는거는 어떻게 해결하죠?

0

395

2

소스코드 압축이 풀리지 않습니다.

0

340

4