리액트 리렌더링 안되게 하는법
313
投稿した質問数 2
문제가 발생한 코드 로직에 대해 설명드리자면 유저가 어떤 상태 선택창을 띄우고 상태를 변경하면 서버로 요청을 보내고 응답이 와서 변경된 데이터로 새로 렌더링 되는 로직입니다. 그런데 여기서 저는 상태 선택창을 닫히지 않게 하고 싶습니다. 그런데 useState를 사용하면 리렌더링 됐을 때 당연히 상태가 초기화 돼서 선택창이 사라질 것이기 때문에 useRef를 사용했습니다.
아래가 그 코드인데 useRef로 했음에도 리렌더링 되고 초기 상태인 false로 바뀌어버립니다. 그래서 상태창을 유지하지 못하고 있습니다. 해결법 좀 아시는 고수님들 도움 좀 주셨으면 좋겠습니다 ㅠ
const maintainStatus = useRef(false);
const changeStatus = (status: LocationStatusType) => {
mutate({
locationStatus: status
}, {
onSuccess: async (res) => { // 성공시
await queryClient.invalidateQueries({ queryKey: homelessListQueryKey }); // 쿼리 최신화
maintainStatus.current = true;
console.log("maintainStatus.current:", maintainStatus.current) //true 출력
}
})
}
useEffect(() => {
console.log("Updated maintainStatus.current:", maintainStatus.current); // false 출력
}, [maintainStatus.current]);
回答 1
0
선택창이라는게 새 창을 말씀하시는건가요?
+ react-query를 사용중이시고 mutate 요청 후 쿼리 캐시를 만료시키고있다면 리렌더링되는것은 당연합니다
0
맞습니다. 근데 리렌더링 됐을 때 상태가 초기화 된다고 잘못 생각했네요. 결국 해결했는데 원인은 부모의 키 설정과 관련한 문제였습니다. 키가 변경되면서 리렌더링이 아니라 아예 언마운트 되면서 상태가 초기화 되는 것이였습니다.
커서 클로드 코드 검색창 검색 시
0
5
1
/init 초기화 이유
0
6
0
Git commit 관련 질문
0
3
1
Powershell은 시스템관리자가 앱을 차단
1
8
1
/plan open 관련 질문 39강 5분 36초
0
12
1
39강 루트 용어 질문
0
8
1
디렉토리 위치 바탕화면
0
14
2
[55강] git init 명령어 안내 혼란
0
21
1
61강 모듈형 규칙 10분06초
0
18
2
Mission 7 부터 어렵네요.
0
25
2
교재(3쇄)와 강의 내용 문의
0
21
2
plan mode 관련 질문 드립니다.
0
27
2
rules 파일 관련 질문입니다!
0
35
2
51강 7분 custom 스타일 질문
0
24
1
모델 차이 궁금증
0
23
3
settings.json 파일
0
28
2
플러그인 설치 관련
0
17
2
GIT과 VSCODE
0
25
2
팀& 서브 에이전트 실활용 방법은 어디에서 볼 수 있을까요?
0
28
2
선생님 강의토대로 개발중인데 질문이 하나있습니다 급함
0
33
2
To-Do App
0
24
1
MCP 서버 설치 내용이 실제와 달라 좀 헷갈립니다.
0
41
2
MCP가 토큰을 낭비한다고 뒷쪽에서 설명해주셨는데요.
0
35
2
[55강 질문] 로컬 커밋관련 질문
0
33
2

