DOM ?
HTML과 JavaScript를 이어주는 공간으로, 작성한 HTML을 JavaScript가 이해할 수 있도록 Object로 변환하는 것
출처 : https://www.howdy-mj.me/dom/what-is-dom/
document.querySelector()
와 비슷 합니다.ref
를 사용하여 저장하면, 해당 ref
안에 있는 값을 아무리 변경해도 컴포넌트는 다시 렌더링이 되지 않습니다.ref
를 사용하면 불필요한 렌더링을 막을 수 있고, ref
에 저장되어 있는 값은 변하지 않고 그대로 유지가 됩니다.import { useRef } from 'react';
ref
키워드 사용import { useRef, useState } from 'react';
const handleSubmit = () => {
if (state.author.length < 1) {
alert('작성자는 최소 1 글자 이상 입력 해주세요');
return;
}
if (state.content.length < 5) {
alert('일기 본문 최소 5 글자 이상 입력 해주세요');
return;
}
alert('저장 성공');
};
alert
으로 경고창을 갑자기 띄우는 것은 좋지 않습니다.const authorInput = useRef();
const contentInput = useRef();
const handleSubmit = () => {
if (state.author.length < 1) {
authorInput.current.focus();
return;
}
if (state.content.length < 5) {
contentInput.current.focus();
return;
}
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}
></textarea>
</div>
...
...
current
는 현재 가리키는 값을 의미 합니다.author.input.current
는 author input
태그