inflearn logo
강의

Course

Instructor

[React / VanillaJS] Creating UI elements directly Part 1

Multiple line ellipsis (1/4) canvas version

반응형 TextBox 질문입니다.

Resolved

478

ding-co

9 asked

0

  1. TextBox2의 경우 제목이 #2. React uncontrolled. canvas 라고 되어 있는데 코드를 보면 단순히 기존 onChange -> onInput으로만 바뀌어 있습니다. 따라서 ref를 사용한 예제로 바뀌면 좋을 것 같습니다.
    TextBox3 제목에 (자체 제작 방법) 이런 문구도 소괄호로 같이 표시되어 있으면 좋을 것 같습니다.
    또한 사소하지한 onChange와 onInput에 대한 약간의 차이 같은 설명이 주석이나 자막으로 처리되어 있으면 더욱 좋을 것 같습니다.


  2. TextBox5에 스터디를 하신 다른 분이 useImperativeHandle 훅을 사용한 것을 만들어주신 것 같은데 혹시 재남님은 useImperativeHandle을 실제 실무에서 활용하신 사례가 있으신지 궁금합니다.

    p.s) 매일 오전에 하나씩 보고 있는데 재밌게 보고 있습니다.
    좋은 강의 감사드립니다~

react typescript dom ui vanilla-js

Answer 1

1

jaenam

  • TextBox2의 강의내용을 시청하지 않고 코드만 보시고 말씀하신 것 같아요. TextBox2는 처음에는 ref를 작성했다가, 나중에(복습스터디 #1. 텍스트박스, 여러줄 말줄임 - 코드리뷰) 변경하게 되거든요. 강의자료의 코드는 강의의 최종 상태만 반영되어 있으니, 가급적 강의영상 위주로 봐주시기 바랍니다 🙂

 

  • 최종 코드상의 TextBox1과 TextBox2의 차이는 onChange -> onInput으로 바뀐것 뿐만이 아니라, value={text}가 사라진 것도 있어요. controlled와 uncontrolled를 가르는 중요한 차이점은 이벤트 핸들러의 등록여부가 아니라, state의 사용 유무에 있습니다.
    다만 위 영상(복습스터디 #1)에서는 onChange handler를 적용하면 Lint에서 "value도 적용하여 controlled로 사용하거나, value와 함께 onChange도 빼서 uncontrolled로 사용할 것"을 경고하기 때문에, 이 경고를 피하기 위해 onInput을 적용했던 것으로 기억해요.

 

image

 

  • useImperativeHandle은 상태에 관여하지 않는 예외적인 상황에서 실제로 사용하고 있습니다. 대표적으로 ui적으로만 조정이 필요한 경우, 예컨대 스크롤 위치 조정이라거나 엘리먼트의 position을 옮기는 용도로요. (이에 대해서는 scrollSpy 강의의 마지막 영상에서 다루고 있습니다 - 스크롤스파이 (4/4) 스크롤박스 재활용)

  • 원론적인 얘기이지만, 리엑트는 선언형 프로그래밍이므로 ref를 위로 전달하여 직접 호출하는 명령형 프로그래밍은 전체 철학의 방향성에 맞지 않습니다. 따라서 ref를 forward하지 않고도 처리할 수 있는 다른 방법이 있는지를 먼저 고민해보는 것이 바람직합니다.

강의 난이도에대해서

0

104

1

강의자료 관련 질문

0

64

2

게시판 리스트 만들때 어디부터 use client를 적용할 지 모르겠어요

0

135

1

강의 연장관련

0

174

2

Tooltip-useSyncExternalStore()에 함수 넘기는 방식에 대해...

0

222

3

textarea 에서 body 무한깜빡현성 질문 드립니다.

0

132

2

닫힌 상태에서 문자열은 찾아지는데 열리진 않아요

0

146

2

scrollSpy 바닐라버전에서 data-index를 찾는 코드 질문

0

128

2

[#보일러플레이트 코드 사용법 문의] 강의자료[보일러플레이트] 사용법에 대해서 문의 드려요

0

318

2

무한스크롤 리액트버전 | 16분 31초

0

176

2

강의자료 github link 404 빈페이지

0

263

2

아코디언 (3/6) css transition 추가 부분 max-height 질문

1

417

2

강의 정리에 대한 블로그 정리 글 게시 문의

0

301

1

[아코디언 1/6 챕터] 클로저 활용 질문 있습니다.

2

444

2

item7 style이 강의자료에 없습니다.

0

291

1

이벤트 핸들러가 Root에 모이면

0

304

1

append와 insertAdjacentElement 차이가 무엇일까요?

0

324

1

아코디언 1/6 강좌 클로져 관련 질문입니다.

0

380

1

gnb 만들기를 실무 next js 프로젝트에서 사용할수 있나요?

1

614

2

학습자료 관련해서 질문있습니다.

0

550

1

무한스크롤 강의 관련 질문입니다.

0

311

1

Tooltip의 useStyleInView 훅 질문입니다.

0

253

1

이벤트에 대한 타입을 지정할 때 궁금한 점이 있습니다.

0

313

1

gnb 를 이렇게 수정해 봤어여

0

640

1