리액트 setstate에서 prev가 왜 업데이트가 안될까요?

리액트 setstate에서 prev가 왜 업데이트가 안될까요?

QA

리액트 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],
};
답변을 작성하시기 전에 로그인 해주세요.
전체 298
QA 내용 검색
filter #js ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT