- input 길이 측정 & input 포커스
const handleSubmit = () => {
let athr = state.author;
let cntnt = state.content;
let emstn = state.emotion;
if (athr.length < 1) {
alert("작성자명은 최소 한글자 이상 입력해주세요");
authorInput.current.focus();
return;
}
if (cntnt.length < 5) {
alert("본문은 최소 5글자 이상 입력해주세요");
contentInput.current.focus();
return;
}
alert("작성 완료!");
};
- React에서 DOM 요소 선택하는 기능 = {useRef}
import React, { useRef, useState } from "react";
const DiaryEditor = () => {
const authorInput = useRef();
const contentInput = useRef();
...
return (
<div className="DiaryEditor">
<h2>오늘의 일기</h2>
<div>
<input
ref={authorInput}
name="author"
value={state.author}
onChange={handleChangeState}
/>
<textarea
ref={contentInput}
name="content"
value={state.content}
onChange={handleChangeState}
/>
</div>
<button onClick={handleSubmit}>저장하기</button>
</div>
);
};
- const authorInput: React.MutableRefObject -> MutableRefObject : html 돔 요소에 접근할 수 있는 기능