4.map함수를 이용하여 셀렉트 박스 구현했다! 😆
const yearData = () => {
const year = [];
for (let i = 2009; i > 1930; i--) {
year.push(i);
}
return year;
};
<select name="year" onChange={handleInput}>
<option>YYYY</option>
{yearDataArr.map(year => (
<option key={year} value={year}>
{year}
</option>
))}
</select>
못할 줄 알았는데 의외로 엄청 쉬운거였다.. 그냥 공부가 하기 싫었나보다.. 충분히 할 수 있었는데 왜 우물쭈물하다가 이제와서 하고있지?????????????? 진짜 절대로 공부할때는 집에서 최대한 안해야지.. 진짜로^^..
const [inputs, setInputs] = useState({
allergy: [],
// 추가를 할거면 배열(list)에 값 하나하나 다 담아줘야 함
});
const {allergy} = inputs;
const handleAllergy = e => {
setInputs(prev => ({
allergy: [...prev.allergy, e.target.value],
// 이렇게 적용시키면 됨.
}));
};
백엔드에 생년월일 값을 줄 때
셀렉트박스가 각각 년, 월, 일 이렇게 나눠져 있기 때문에 한꺼번에 값을 줄 수가 없어서
input값은 각각 onchange로 담고 fetch함수로 넘겨줄때 body에서
${year}-${month}-${day}
₩백엔드가 birth로 하이픈으로 연결해서 스트링으로 달라고 했기 때문에 스트링에 변수값을 넣기 위해 백틱과 ${}를 이용해서 저렇게 해서 보내면 됨.
const [allergyData, setAllergyData] = useState([]);
useEffect(() => {
fetch('http://208.82.62.99:8000/user/allergy')
.then(res => res.json())
.then(res => {
setAllergyData(res.allergies_list); // 1번
// setAllergyData(prev => [res.allergies_list, ...prev]); // 2번
});
}, []);
1번 함수를 쓴 이유는 이전의 상태값을 고려할 필요가 없기 때문이다.
1번은 백엔드에서 받아온 데이터를 state로 저장하는 건데, 이전의 상태값이 영향을 주지 않기도 하고 백엔드에서 받은 데이터를 따로 수정하거나 삭제하는 과정을 거치지 않고 바로 그냥 값을 대체해버리는 것이기 때문에 깊이 고민할 것 없이 1번을 쓰는게 맞음