value={상태}의 경우 상태변경함수를 통해서만 값을 바꿀 수 있다. 그러므로 함수를 작성하지 않았다면 input의 값을 바꿀 수 없다. 하지만 값의 변동이 없어보이지만 이벤트는 작동하고 있다. 예를 들어 value={상태} 상태초기값이 5인데 input에 6을 입력하면 보이기에는 변경되지 않지만 event.target.value는 56이된다. 이 값을 상태변경함수에 전달에 준다면 상태가 변경되어 보이는 값도 56으로 변경이 될 것이다.
그러니깐 변경 안된다고 막 defaultValue로 변경하면 안된다. defaultValue={상태}지정하니깐 장바구니 목록삭제할 때 상품의 수량이 하나씩 밀려서 나왔다. 왜 그렇게 나왔는지는 정확한 이유는 모르겠다.
map은 콜백함수의 리턴값으로 요소를 바꿔준다. 그러므로 객체를 재할당 하고 싶다면 el.key = (변경하고 싶은 값) 으로 콜백함수를 작성하면 객체가 변경하고 싶은 값으로 변경된다. 그러므로 재할당해주는게 아니라 변경하고 싶은 객체를 리턴하는 콜백함수를 작성해야한다.
return도 꼭 까먹지 말기!
const handleQuantityChange = (quantity, itemId) => {
setCartItems(
cartItems.map(el => {
if (el.itemId === itemId) {
return { itemId: itemId, quantity: quantity } //객체 전체
} else return el
})
)
}
과제 구조 안 그려봤는데 한번 그려보고 했으면 도움됐었을 것 같다. 이게 어디서 내려오는 건지 계속 파일을 찾아 헤맸어서. value랑 defaultValue때문에 버린 1시간이 너무 아깝다. 왜 굳이 바꿔서 사서 고생했는지.. ㅋㅋ
오늘 스터디에서 알게된 메서드 활용해서 코테 문제 하나 풀었는데 그 방법이 가장 좋아요 많이 받은 방법이였어서 넘 뿌듯했다.