본문 바로가기
반응형

react2

state를 직접 변경하지 않고 useState로 변경해야 하는 이유 그냥 리액트는 변수가 state고 변경할땐 useState쓰는거야! 라고 생각해왔다가 오늘 한번 이유를 생각해보았다. state가 변경될때 업데이트되기 때문에?? 그럼 왜 직접변경은 안되고 꼭 useState로 변경시켜야할까?? 이유는 리액트가 객체의 메모리주소 를 비교하기 때문이다. 직접 변경하면 값만 변경되고 메모리주소는 변경되지 않으므로, state변화를 알아채지 못한다. => 리렌더링 x, 화면이 업데이트 되지 않음 const [name,setName] = useState(' '); 여기서 setName은 name을 변경하는 것이 아니라, 메모리 어딘가에 있는 값(메모리주소)을 변경하는 것이다. 그 후 name과 관련된 DOM이 리렌더링 된다. 참고1 참고2 2022. 10. 7.
try/catch : 렌더링중에 발생하지 않는 이벤트 핸들러에서의 에러처리 try/catch를 나는 사용한 적은 없고, 항상 남이 사용하는 것을 유지보수 하기만 했다. 대충 에러처리를 위한 코드라는 것을 주워듣긴 했지만 이번에 공식문서에 들어가서 확인해보았다. 리액트의 이벤트핸들러 리액트의 이벤트핸들러는 렌더링중에 발생하지 않는다. 즉 이벤트 핸들러에서 문제가 생겨도 리액트는 여전히 화면에 무엇을 표시해야 할 지 알고 그 행위를 위해 작동한다. 이벤트핸들러 내에서 문제가 발생해도 계속 작동 => 잘못된 화면이 렌더링 될 수 있음 때문에! 이벤트핸들러 내에서 에러를 잡아야 하는 경우 try/catch구문을 이용하라고 공식문서에서 이야기한다. const handleSubmitCodeProblem = async () => { try { //로직 } catch (error) { //t.. 2022. 7. 1.
반응형