all is well!!

1. [js] 배열을 변경할때 리렌더링 일어나지 않음 본문

Javascript 공부

1. [js] 배열을 변경할때 리렌더링 일어나지 않음

tnqlscho 95 2023. 1. 23. 23:25
const [plus, setPlus] = useState([{ a: '', b: '' }]);

const var1 = (a, b) => {
    {
      const var2 = plus.findIndex(e => e.idx == idx);
      if (var2 == -1) {
        const value = {
          a: a,
          b: b
        }
        setPlus([...plus, value]);
      }
    }
  }

usestate set에 새로운 배열 값을 추가했지만 리렌더링은 고요해서 또 땀이 삐질삐질...😅

배열 부분도 그렇고 아직 state에 대한 개념이 부족한 것 같다.

 

다시 차근차근 찾아보니 불변성을 지키지 못해 일어난 오류였던것 같다...

 

불변성이란?

불변성은 메모리 영역의 값을 변경할수 없게 직접적으로 변경하지 않고 새로운 값을 만들어내는 것으로
사본을 만들어쓴다. (깊은 복사)
const [plus, setPlus] = useState([{ a: '', b: '' }]);

const var1 = (a, b) => {
    {
      const var2 = plus.findIndex(e => e.idx == idx);
      if (var2 == -1) {
        const value = {
          a: a,
          b: b
        }
        const puls1 = [...plus, item]
        setPlus(puls1);
      }
    }
  }

이번에 쓴것처럼 참조 타입은 새로운 객체나 배열을 생성한 후 값을 넣어주어야 한다.

이렇게 했더니 리렌더링이 일어났다..!

 

깊은 복사 얕은 복사 조만간 다시 정리해봐야지..

'Javascript 공부' 카테고리의 다른 글

6. 프로그래밍  (0) 2023.05.10
5. 클로저  (0) 2023.05.09
4. 스코프 체이닝  (0) 2023.05.05
3. 증감 연산자  (0) 2023.02.20
2. 논리 연산자  (0) 2023.01.24
Comments