const DiaryEditor = ()=>{
return(
<div className="DiaryEditor">
<h2>오늘의 일기</h2>
<div>
<input/>
</div>
<div>
<textarea/>
</div>
<div>
<select>
<option vlaue ={1}>1</option>
<option vlaue ={2}>2</option>
<option vlaue ={3}>3</option>
<option vlaue ={4}>4</option>
<option vlaue ={5}>5</option>
</select>
</div>
<div>
<button>일기 저장하기</button>
</div>
</div>
)
}
export default DiaryEditor;
+input
, textarea
, select
, button
으로 이루어진 간단한 입력 장치
import {useState} from "react";
const DiaryEditor = ()=>{
const [author, setAuthor] = useState("");
const [content, setContent] =useState("");
return(
<div className="DiaryEditor">
<h2>오늘의 일기</h2>
<div>
<input
value = {author}
onChange = {(e)=>{
setAuthor(e.target.value);
}}/>
</div>
<div>
<textarea
value = {content}
onChange = {(e)=>{
setContent(e.target.value);
}}/>
</div>
import {useState} from "react";
코드 작성해 useState를 쓸 수 있도록 react를 연결시켜준다. const [author, setAuthor] = useState("");
const [content, setContent] =useState("");
input
의 value
는 브라우저에 나타는 값onChange
함수를 이용해 값이 변경될때마다 함수가 실행되면서 State에 지정한 함수가 실행 되도록 한다. <input
value = {author}
onChange = {(e)=>{
setAuthor(e.target.value);
}}/>
e
는 이벤트 매개변수로 이벤트가 일어나면 여러 데이터를 가지고 있어, e의 target을 이용해 어떤 것이 타켓 되었는지 판별하고 value의 값을 가져온다.import {useState} from "react";
const DiaryEditor = ()=>{
const [state , setState] = useState({
author : "",
content : "",
});
return(
<div className="DiaryEditor">
<h2>오늘의 일기</h2>
<div>
<input
value = {state.author}
onChange = {(e)=>{
setState({
...state,
author : e.target.value,
});
}}
/>
</div>
<div>
<textarea
value = {state.content}
onChange = {(e)=>{
setState({
...state,
content : e.target.value,
})
}}/>
const [state , setState] = useState({
author : "",
content : "",
});
<div>
<input
value = {state.author}
onChange = {(e)=>{
setState({
...state,
author : e.target.value,
});
}}
/>
</div>
setState()
안에 객체의 프로퍼티 값을 다시 적어주어 값을 변경하도록 한다import {useState} from "react";
const DiaryEditor = ()=>{
const [state , setState] = useState({
author : "",
content : "",
});
const handleChange = (e)=>{
setState({
...state,
[e.target.name] : e.target.value,
})
}
return(
<div className="DiaryEditor">
<h2>오늘의 일기</h2>
<div>
<input
name = "author"
value = {state.author}
onChange = {handleChange}
/>
</div>
<div>
<textarea
name = "content"
value = {state.content}
onChange = {handleChange}/>
</div>