리액트 setstate에서 prev가 왜 업데이트가 안될까요?
본문
<button
type="button"
name="addCard"
data-index={index}
onClick={(e) => {
TotalToggle(e);
}}
>
//element
-------------------------------------------------------------------
//js
const [toggle, setToggle] = useState({
toggleArray: [],
conToggle: [],
addCard: [],
});
function TotalToggle(e) {
const target = parseInt(e.currentTarget.getAttribute("data-index"));
const typeName = e.currentTarget.name;
if (!toggle[typeName].includes(target)) {
setToggle((prev) => {
return {
[typeName]: [...prev[typeName], target],
};
});
}
}
안녕하세요 리액트에서 버튼이 1~5번까지 있다는 가정 누를 때 마다
버튼의 index 0~5를 차례대로 넣을 예정입니다. 근데 함수를 실행 할 시
[1,2,3,4,5] 처럼 되야하는데 [0]>[1]>[2] 이렇게 되서
consolelog(prev[typeName])를 해보니 빈 배열이 뜨더라구여,,, 왜이러는걸까요..
!-->답변 1
setToggle((prev) => {
return {
[typeName]: [...prev[typeName], target],
};
});
이 부분에 return은 들어갈 이유가 없을것 같네요.
setToggle((prev)=>{
[typeName]: [...prev[typeName], target],
};
답변을 작성하시기 전에 로그인 해주세요.