2024-06-06 게시글을 업데이트 했음에도 페이지가 리렌더링 되지 않는 이유
해결방법
너무 간단한 문제였는데, 문제는 fetch를 받아 온 데이터를 posts 라는 state에 담아 다른 컴포넌트에서도 사용할 수 있게 props로 하위 컴포넌트에 전달했는데 이 과정에서 리렌더링이 발생할 만한 조건을 내려주지 않은 것이다.
즉 posts라는 상태의 상태 변경 함수를 같이 내려주지 않았다는 것이 문제다.
<Router posts={posts} setPosts={setPosts} users={users} signIn={signIn} setSignIn={setSignIn} signOut={signOut}/>
그렇다 보니 posts 상태가 변경되었음에도 홈 피드에서는 posts의 상태를 변경해줄 수 없었던 것이다.
그래서 새로고침을 직접 누르거나 아래 처럼 강제로 리로드를 해주어야 App 컴포넌트가 리렌더링 되면서 자식 컴포넌트들이 리렌더링이 그제서야 되는 문제가 발생했던 것이다.
// 기존 코드
navigate('/');
window.location.reload();
// 변경 코드
navigate('/', { state: { refresh: true } }); // 상태를 전달하여 홈으로 이동
'Programing > TIL' 카테고리의 다른 글
2024-06-10 헤더 만들기 (styled-components) (0) | 2024.06.11 |
---|---|
2024-06-07 팀 프로젝트 회고 (0) | 2024.06.07 |
2024-06-05 팀 프로젝트 중간 회고 (2) | 2024.06.05 |
2024-06-04 API 렌더링 시 태그가 그대로 노출되는 문제 해결 방법 (0) | 2024.06.04 |
2024-06-03 Supabase 스키마 이해하기 (0) | 2024.06.03 |
댓글