inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] React로 NodeBird SNS 만들기

글로벌 스타일과 컴포넌트 폴더 구조.

esc 를 눌렀을 경우 동작

341

열씨미살자!

작성한 질문수 87

0

안녕하세요 혹시 상세 페이지에 들어갔을 경우 esc를 누르면 ImagesZoom 컴포넌트를 끄게 하고 싶다면 어떻게 할 수 있을까요? onKeyDown을 이용하여 로직을 짜보았는데 동작을 하지않습니다..

import React, { useState, useCallback } from "react";
import PropTypes from "prop-types";
import Slick from "react-slick";
import {
  Global,
  Overlay,
  Header,
  SlickWrapper,
  Indicator,
  ImageWrapper,
  CloseBtn,
} from "./styles";

const Imageszoom = ({ images, onClose }) => {
  // 현재 슬라이드 위치를 표시하기 위한 state
  const [currentSlide, setCurrentSlide] = useState(0);
  const handleKeyPress = useCallback((e) => {
    if (e.key == 27{
      onClose();
    }
  }, []);

  return (
    <Overlay>
      <Global />
      <Header>
        <h1>상세 이미지</h1>
        <CloseBtn onClick={onCloseonKeyDown={handleKeyPress/>
      </Header>
      <SlickWrapper>
        <Slick
          initialSlide={0}
          beforeChange={(slide) => setCurrentSlide(slide)}
          infinite
          arrows={false}
          slidesToShow={1}
          slidesToScroll={1}
        >
          {images.map((v) => (
            <ImageWrapper key={v.src}>
              <img src={v.srcalt={v.src/>
            </ImageWrapper>
          ))}
        </Slick>
        <Indicator>
          <span>
            {currentSlide + 1} / {images.length}
          </span>
        </Indicator>
      </SlickWrapper>
    </Overlay>
  );
};

Imageszoom.propTypes = {
  images: PropTypes.arrayOf(PropTypes.object.isRequired),
  onClose: PropTypes.func.isRequired,
};

export default Imageszoom;

redux express react nodejs Next.js

답변 2

0

한수빈

    useEffect(
        () => {
            const handleKeyPress = e => e.keyCode == 27 && onClose();

            window.addEventListener('keyup', handleKeyPress);

            return () => {
                window.removeEventListener('keyup', handleKeyPress);
            };
        },
        []
    );

0

제로초(조현영)

handleKeyPress를 Overlay에 달아보세요.

넥스트 버젼 질문

0

77

2

로그인시 401 Unauthorized 오류가 뜹니다

0

89

1

무한 스크롤 중 스크롤 튐 현상

0

175

1

특정 페이지 접근을 막고 싶을 때

0

103

2

createGlobalStyle의 위치와 영향범위

0

96

2

인라인 스타일 리렌더링 관련

0

91

2

vsc 에서 npm init 설치시 오류

0

146

2

nextjs 15버전 사용 가능할까요?

0

158

1

화면 새로고침 문의

0

121

1

RTK에서 draft, state 차이가 있나요?

0

153

2

Next 14 사용해도 될까요?

0

452

1

next, node 버전 / 폴더 구조 질문 드립니다.

0

349

1

url 오류 질문있습니다

0

211

1

ssh xxxxx로 우분투에 들어가려니까 port 22: Connection timed out

0

372

1

sudo certbot --nginx 에러

0

1274

2

Minified React error 콘솔에러 (hydrate)

0

470

1

카카오 공유했을 때 이전에 작성했던 글이 나오는 버그

0

247

1

프론트서버 배포 후 EADDRINUSE에러 발생

0

327

1

npm run build 에러

0

518

1

front 서버 npm run build 중에 발생한 에러들

0

381

1

서버 실행하고 브라우저로 들어갔을때 404에러

0

338

2

css 서버사이드 랜더링이 적용되지 않아서 문의 드립니다.

0

287

1

팔로워 3명씩 불러오고 데이터 합쳐주는걸로 바꾸고 서버요청을 무한으로하고있습니다.

0

237

2

해시태그 검색에서 throttle에 관해 질문있습니다.

0

201

1