inflearn logo
강의

Course

Instructor

Learning React.js with TypeScript: From Basics to the Latest Technologies Perfectly

Controlled Component - Single-line Input Element

리액트 객체의 타입을 알기위하여 마우스를 올렸을 때 나오는 형식이 강의와 다른 부분 문의 드립니다.

65

작성자 없음

0 asked

0

안녕하세요. 지금 125강 제어 컴포넌트 부분

문의 드립니다.

 

input type에서 onChange 함수에

handleInputchange를 호출을 하고 있는 부분을 따라하고 있었습니다.

 

리액트 객체의 타입을 알아야 하기 때문에 마우스를 e에다가 가져보면 저는
(parameter) e: ChangeEvent<HTMLInputElement>

이렇게 나오고 있습니다.

그런데 강의에서는 (parameter) e: React.ChangeEvent<HTMLInputElement> 이렇게 나오고 있어서요.

 

저의 VS CODE에서는 React. 이 부분이 누락이 되어서 알려주고 있습니다.

 

image.pngimage.png

const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => { setInput(e.target.value); };

 

이렇게 넣었을 시에 ChangeEvent 에 빨간불은 들어오지만 화면 자체에 에러는 안나오는 것 같습니다.

강사님 강의처럼 React. 이 부분을 넣지 않아도 괜찮을지에 관하여서 문의 드려봅니다.

 

강의 너무 잘 보고 있습니다

감사합니다.

 

 

 

react react-router redux-toolkit zustand react.js

Answer 2

0

sucoding

안녕하세요!

해당 질문에 대해 인프런 AI 인턴이 이미 충분히 자세한 답변을 제공해 주어서,
제가 추가로 덧붙일 내용은 거의 없는 것 같습니다. 😊

그래도 제 의견을 정리하자면 다음과 같습니다.

ChangeEvent를 단독으로 사용하려면 아래처럼 별도로 import 해주어야 합니다.

import { ChangeEvent } from "react";

const handleChange = (e: ChangeEvent<HTMLInputElement>) => {};

이러한 import가 번거롭다면, import 없이 React.ChangeEvent 형태로 사용할 수도 있습니다.

const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {};

어느 쪽이 정답이라고 할 수는 없지만, 개인적으로는 후자의 방식을 더 선호합니다.

참고 부탁드립니다!

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 면류관받는날까지#님.

React에서 ChangeEvent 타입을 명시할 때, React.ChangeEvent 대신 ChangeEvent만 사용해도 빨간불이 표시되지 않는 이유가 궁금하시군요.

이유

  1. 환경 설정: 프로젝트에서 ChangeEvent를 직접 import한 경우, React.를 명시하지 않아도 사용할 수 있습니다. TypeScript가 해당 타입을 프로젝트의 타입 선언(context) 파일에서 찾을 수 있으면 문제없이 작동하게 됩니다.

  2. 타입스크립트 환경: tsconfig.json에서 compilerOptions에 따라 인텔리센스 및 타입 확인 기능이 다르게 작동할 수 있습니다.

  3. 레이리어 없이 사용 가능: 타입을 누락한 경우, 에러가 발생한다면 이는 컴파일러가 ChangeEvent 타입의 선언을 찾지 못했기 때문입니다. React.를 명시함으로써 타입을 명확하게 정의할 수 있습니다.

그래도 React. 을 사용하는 이유

  • 일관성: 프로젝트 전체에서 작성 스타일의 일관성을 유지할 수 있으므로 협업 시 가독성이 높아집니다.
  • 명확성: React 라이브러리에서 제공하는 타입임을 명확히 할 수 있어 코드의 유지보수성을 높일 수 있습니다.

해결 방법

  1. 명시적으로 React. 사용: 타입이 어디서 오는지를 명확히 알 수 있어 유지보수가 수월합니다.
import React, { ChangeEvent } from 'react';

const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {
  setInput(e.target.value);
};
  1. 리팩토링 및 옵션 확인: tsconfig.json에 설정된 compilerOptions와 타입 선언을 확인하여 타입 추론에 문제가 없는지 점검해 보세요.

질문하신 내용을 더 깊이 이해할 수 있는 참고 링크를 제공해드립니다:
- “TypeScript에서 React Event 및 ChangeEvent 제대로 사용하기”

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

cloudinary 관련

0

39

3

useOptimistic 실전-1 useState

0

60

2

discord 초대장 갱신이 필요한거같습니다.

0

61

1

할일 관리 앱(메모이제이션)

0

79

2

Web 플랫폼 등록

0

107

2

함수 정의 기준

0

76

2

fetch는 사용되는가

0

75

2

전역상태 관리 선택 기준

0

85

2

tailwind css는 언제 사용되는가 또 다른 css와의 차이

0

153

2

카카오 web플랫폼 등록

0

144

2

컴포넌트 그리고 폴더 구조에 대해

0

59

2

152강 보는중입니다. 초시계부분이구요. 넘버가 timeout을 받을수없다는 에러가 나오고 있어요

0

42

1

폼테그 다른 태그를 하나의 상태 객체로 묶기

0

43

2

class를 className으로 전부 수정하실 때

0

42

2

JWT에 대한 개념도 학습할 수 있나요?

0

64

2

수업자료 다운로드

0

51

2

useState 자동생성 하실때 누른 키보드가 궁금합니다.

0

51

1

타입스크립트 타입이 불일치하는데 에러가 안납니다.

0

75

3

default format >> prettier 이 실행이 안됩니다.

0

65

2

윈도우 사용자입니다. homebrew 윈도우 설치법은 없나요?

0

343

3

리렌더링 관련 문의

0

56

2

공부 방향에 대해서

0

62

2

form action 과 onSubmit

0

59

2

카카오로그인 에러

0

74

3