<aside> 💡 다양한 사용자 입력 처리하기
세부목표
</aside>

input에 value를 넣으면 직접 입력을 못하지만 onChange이벤트를 통해 바꿀 수 있다.
import {useState} from 'react';
const DiaryEditor = () => {
const [author, setAuthors] = useState("박정수");
return <div className="DiaryEditor">
<h2>오늘의 일기</h2>
<div>
{/* 아래처럼 value에 저렇게 값을 넣으면 직접 키보드로 값 변경 x */}
<input value={author} onChange={(e)=>{
name="author"
console.log(e.target.value);
console.log(e.target.name);
setAuthors(e.target.value);
}}/>
</div>
</div>
};
export default DiaryEditor;
import {useState} from 'react';
const DiaryEditor = () => {
const [state, setState]
const [author, setAuthors] = useState("");
const [content, setContent] = useState("");
return <div className="DiaryEditor">
<h2>오늘의 일기</h2>
<div>
{/* 아래처럼 value에 저렇게 값을 넣으면 직접 키보드로 값 변경 x */}
<input value={author}
name="author"
onChange={(e)=>{
setAuthors(e.target.value);
}}/>
</div>
<div>
<textarea value={content}
onChange={(e) => {
setContent(e.target.value);
}}
/>
</div>
</div>
};
export default DiaryEditor;

…state는 맨위에 다 적어야함
\\import {useState} from 'react';
const DiaryEditor = () => {
const [state, setState] = useState({
author: "",
content: "",
})
return <div className="DiaryEditor">
<h2>오늘의 일기</h2>
<div>
{/* 아래처럼 value에 저렇게 값을 넣으면 직접 키보드로 값 변경 x */}
<input value={state.author}
name="author"
onChange={(e)=>{
setState({
...state,
author: e.target.value,
});
}}/>
</div>
<div>
<textarea value={state.content}
onChange={(e) => {
setState({
...state,
author: state.author,
//content: e.target.value,
});
}}
/>
</div>
</div>
};
export default DiaryEditor;
import {useState} from 'react';
const DiaryEditor = () => {
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
})
}
return <div className="DiaryEditor">
<h2>오늘의 일기</h2>
<div>
{/* 아래처럼 value에 저렇게 값을 넣으면 직접 키보드로 값 변경 x */}
<input value={state.author}
name="author"
onChange={handleChangeState}/>
</div>
<div>
<textarea 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>
};
export default DiaryEditor;
import {useState} from 'react';
const DiaryEditor = () => {
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 = () => {
console.log(state);
alert("저장 성공")
}
return <div className="DiaryEditor">
<h2>오늘의 일기</h2>
<div>
{/* 아래처럼 value에 저렇게 값을 넣으면 직접 키보드로 값 변경 x */}
<input value={state.author}
name="author"
onChange={handleChangeState}/>
</div>
<div>
<textarea 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;