다람쥐🐿

*-커비 프로젝트-* 움직인다!

당근먹는하니 2022. 5. 26. 00:45
728x90
반응형
 KeyboardEvent - 키보드 입력받기 

 마우스 이벤트와 달리, 타입스크립트는 InputEvent에 대한 유형 선언을 제공하지 않는다. 대신 KeyboardEvent 를 사용한다. 

 

import {KeyboardEvent} from 'react';

Next.js 사용하기 때문에 React는 따로 import 하지 않았다.

 

매개변수 e로 KeyboardEvent를 받는데 뒤에 :void 를 안 썼더니 아래와 같은 오류가 나왔다. 

 

: void 붙여줌

 

 

import { useState, KeyboardEvent, useEffect } from "react";

useState, useEffect 추가

  useEffect(() => {
    const handleKey = (event) => {
      if (event.key === "ArrowRight") {
        console.log(event);
        console.log("헐대박들어온더");
        setMargin((prev) => prev + 1);
        console.log(margin);
      }
    };
     window.addEventListener("keydown", handleKey); // 있으면 뚝뚝 끊기며 크게 이동...뭐하는애지
  });

 

window.addEventListener 유무에 따른 차이

🪟window.addEventListener 

 지정한 유형의 이벤트를 수신할 때마다 호출할 함수를 설정한다. 

 

addEventListener(type, listener);
addEventListener(type, listener, options);
addEventListener(type, listener, useCapture);

type : 수신할 이벤트 유형

listener : 지정한 이벤트를 수신할 객체, EventListener 인터페이스를 구현하는 객체거나, JavaScript 함수여야 한다.

options : 이벤트 수신기의 특징을 지정할 수 있는 객체 

                - capture : EventTarget으로 이벤트가 전달되기 전에 listener 먼저 발동되어야 할 지 true/false 설정

                - once : listener가 한 번만 동작해야함 true/false

                - passive : true면 listener 내에서 절대 preventDefault() 를 호출하지 않음 true/false 

                - signal : AbortSignal(요청이 취소되었는지, 그렇지 않은지) 

 

 

 

 

https://www.newline.co/@bespoyasov/how-to-handle-keyboard-input-events-in-react-typescript-application--9b21764e

 

https://developer.mozilla.org/ko/docs/Web/API/EventTarget/addEventListener

 

728x90
반응형