<aside> 💡 세부목표
일기 저장 버튼을 클릭했을 때
작성자와 일기가 정상적으로 입력되었는지 확인하고
아니라면 focus하기
</aside>
사용 import
import { **useRef**, useState } from 'react';
해당 authorInput은 React.MutableRefObject라는게 저장이 되며 해당 기능은 html 즉 dom 요소를 접근할 수 있는 기능을 제공
const authorInput = useRef();
import { useRef, useState } from 'react';
const DiaryEditor = () => {
const authorInput = useRef();
const contentInput = useRef();
const [state, setState] = useState({
author: "",
content: "",
emotion: 1,
})
const handleChangeState = (e) => {
console.log(e.target.name);
console.log(e.target.value);
setState({
...state,
[e.target.name]: e.target.value
})
}
const handleSubmit = () => {
if(state.author.length < 1){
// focus
authorInput.current.focus();
return;
}
if(state.content.length < 5){
// focus
contentInput.current.focus();
return;
}
alert("저장 성공")
}
return <div className="DiaryEditor">
<h2>오늘의 일기</h2>
<div>
{/* 아래처럼 value에 저렇게 값을 넣으면 직접 키보드로 값 변경 x */}
<input
ref={authorInput}
value={state.author}
name="author"
onChange={handleChangeState}/>
</div>
<div>
<textarea
ref={contentInput}
value={state.content}
name="content"
onChange={handleChangeState}
/>
</div>
<div>
<select name="emotion" value={state.emotion} onChange={handleChangeState}>
<option value={1}>1</option>
<option value={2}>2</option>
<option value={3}>3</option>
<option value={4}>4</option>
<option value={5}>5</option>
</select>
</div>
<div>
<button onClick={handleSubmit}>일기 저장하기</button>
</div>
</div>
};
export default DiaryEditor;