-> 요 상태로 되어있으면 된다(안쓰는거 다 지워도됨!)
cd simple diary로 경로 한번 더 잡고 들어가야함(git ignore안먹는 문제때문에..!)
-> input 변화할때마다 콜백함수가 값을 감지함, console에 찍음
-> 알아야 할 값 : e.target.value!
-> 이렇게 같다면, 하나로 써주는게 낫다!
💥근데, author랑 content 모두 e.target.value로 놔버리면 안됨 -> 그럼 두개의 값이 모두 바뀜!
🙋♀️아니 그럼, 10개의 객체를 전부다 주렁주렁 적어야 하는가? 아님! (spread 연산자를 쓴다!)
=> ...state라고 쓴다면, state.author, state.content 이런식으로 펼쳐져있을것!!!!!
(이거 쓰려면 ...state를 제일 먼저 써줘야함!, 업데이트는 항상 순서대로 되기 때문!)
중요!
// setState는 상태를 바꿔주는 함수이기때문에 여기에 접근할 수는 없음,
// 값을 확인하려면 state.author 해서 접근해야함
-> 똑같은 형태로 추가되므로 이렇게 useState 객체 안에 넣어두고!(초기화값으로!)
<div>
<select
name="emotion"
value={state.emotion}
onChange={handlerChangeState}
>
<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>
=> 언제나 div로 감싼다!
<div>
<button onClick={handleSubmit}>일기 저장하기</button>
</div>
.DiaryEditor{
border: 1px solid gray;
text-align: center;
padding: 20px;
}
.DiaryEditor input, textarea{
margin-bottom: 20px;
width: 500px;
padding: 10px;
}
.DiaryEditor textarea{
height: 150px;
}
.DiaryEditor select{
width: 300px;
padding: 10px;
margin-bottom: 20px;
margin-left: 10px;
}
.DiaryEditor button{
width: 500px;
padding: 10px;
cursor: pointer;
}