728x90
1. handleSubmit에 조건문, focus문 추가
2. DOM에 접근하는 useRef() 사용
DiaryEditor.js
import { useRef, useState } from "react"; const DiaryEditor = () => { const authorInput = useRef(); const contentInput = useRef(); const [state, setState] = useState({ author: "", content: "", emotion: 1, }); const handleChangeState = (e) => { setState({ ...state, [e.target.name]: e.target.value, }); }; const handleSubmit = () => { if (state.author.length < 1) { alert("작성자는 최소 1글자 이상 입력해주세요."); authorInput.current.focus(); // focus return; // 더이상 출력 안되도록 막기 } if (state.content.length < 5) { alert("일기 본문은 최소 5글자 이상 입력해주세요."); contentInput.current.focus(); // focus return; } console.log(state); alert("저장 성공"); }; return ( <div className="DiaryEditor"> <h2>오늘의 일기</h2> <div> <input ref={authorInput} name="author" value={state.author} onChange={handleChangeState} /> </div> <div> <textarea ref={contentInput} name="content" value={state.content} onChange={handleChangeState} /> </div> <div> <span>오늘의 감정점수 : </span> <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;
한입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지 - 인프런 | 강의
개념부터 독특한 프로젝트까지 함께 다뤄보며 자바스크립트와 리액트를 이 강의로 한 번에 끝내요. 학습은 짧게, 응용은 길게 17시간 분량의 All-in-one 강의!, 리액트, 한 강의로 끝장낼 수 있어요.
www.inflearn.com
728x90
'🤯TIL > React' 카테고리의 다른 글
[한입 크기로 잘라 먹는 리액트] React에서 배열 사용하기 2 - 데이터 추가하기 (0) | 2023.11.19 |
---|---|
[한입 크기로 잘라 먹는 리액트] React에서 배열 사용하기 1 - 리스트 렌더링 (조회) (2) | 2023.11.19 |
[한입 크기로 잘라 먹는 리액트] React에서 사용자 입력 처리하기 (0) | 2023.11.17 |
[React vs JavaScript] React란? (0) | 2023.11.04 |
[코딩앙마] 영어 단어장 CRUD_v6기준 (0) | 2023.07.31 |