useState가 업데이트 하는방식

-·2022년 11월 1일
0

useState는 참조값을 비교해서 업데이트를 할지 말지 결정함.

참조값이 같으면 화면 업데이트를 진행 안한다는 말씀.

그럼 항상 업데이트되게 하고싶으면 어떨까?

깊은복사를 해주면 해결~

setState((previousState) => {
    return Object.assign({}, previousState, {a: "newValue"})
    // Or return {...previousState, a: "newValue"}
})

이런식으로 assign이나 전개문법을 사용하면 된다.

JSON.stringify()를 이용하는 방법도 있고

위의 방식을 사용하게 되면 원본객체와의 참조를 모두 끊어내기 때문에 항상 새로운 객체가 할당된다.

그럼 state값이 바뀔 떄마다 항상 화면이 업데이트 되는 결과를 가져올수있다.

원래는 문자열을 저런식으로 바꿀수있는방법이 없을까 생각해서 찾아봤는데

원시타입(Primitive type)은 참조값을 비교하는게 아니라 값 그자체를 비교하기 때문에 위 처럼 참조값을 변화시켜서 항상 업데이트 하는방식은 적용할수가 없다.

오늘 하루종일 찾아봤는데 방법이 없는듯...

profile
거북이는 오늘도 걷는다

0개의 댓글