장기현장실습
SNU 성문분석 이슈
원격 서버에 접속하기 클릭 시 input에 바로 focus 되도록, 접속 버튼을 클릭 했을 때도 input으로 focus되게 수정
- input이 기본 html 태그가 아니라 부트스트랩 Form.Control 태그를 사용하고 있어서 focus() 함수를 바로 사용하진 못함
- UseRef()를 사용해서 해당 DOM에 접근함
- 일반 HTML 요소와 같은 타입으로 만들어주기 위해 타입도 함께 선언함
const nameInput = useRef<HTMLInputElement>(null); <Form.Control id="server-url" type="url" placeholder="ip 주소를 입력해주세요." value={ urlInput } onChange={ e => setUrlInput(e.target.value)} onKeyPress={submitUrl} ref={nameInput} />
- 모달이 열렸고(visible = true) focus할 input이 있을 때 focus 하도록 코드 추가
useEffect(() => { if( visible && nameInput ){ nameInput.current?.focus(); } }, [ visible, nameInput ])
- 접속 버튼 클릭 시, 실행되는 함수에 focus 내용 추가 (버튼이 아닌 input에 포커스하도록)
const onSubmitUrl = () => { setAlertVisible(false); if(nameInput) { nameInput.current?.focus(); } ... }
'TIL' 카테고리의 다른 글
# 211221 TIL ([React, tsx] 부트스트랩 UI 수정) (0) | 2021.12.22 |
---|---|
# 211220 TIL ([React, tsx] 체크박스 클릭 시 함수 실행) (0) | 2021.12.20 |
# 211210 TIL ([React, tsx] useMemo 사용해서 result 화면에 나타내기) (0) | 2021.12.13 |
# 211209 TIL ([Ruby, slim] 함수 매개변수 사용하여 쿼리하기) (0) | 2021.12.10 |
# 211208 TIL ([React, tsx] type 마다 컴포넌트 내용 변경하기) (0) | 2021.12.10 |