리액트 리렌더링 안되게 하는법
314
작성한 질문수 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
15
1
[문의] 섹션 7 미션 진행 중...
0
14
1
기본 브랜치의 이름이 master에요.
0
15
1
관리자 페이지 질문
0
12
1
plans 생성이 안됩니다.
0
17
2
더빙에 어떤 ai가 쓰였는지 궁금합니다.
0
19
0
보안 적용에 대한 강의가 있을까요?
0
12
1
Auto-memory 기능
0
15
1
64강 context 7 관련 질문
0
15
1
Auto-memory 기능
0
16
0
55강 7분56초
0
13
0
55강 git 초기화 관련 질문이요
0
12
1
클로드 코드에 붙여넣기후 편집 관련 질문입니다!
0
17
1
존재하지 않는 일기 url입력 시 alert이 두 번 떠요
0
24
1
윈 터미널의 클로드와 에디터의 터미널의 클로드에 관한 질문
0
16
1
output-styles 명령어 없어 지지 않았나요?
0
20
1
[MISSION 7] 프로필 웹 Github 링크 제출하기 관련..
0
28
0
커서 클로드 코드 검색창 검색 시
0
20
1
/init 초기화 이유
0
29
2
Git commit 관련 질문
0
23
2
Powershell은 시스템관리자가 앱을 차단
1
26
2
/plan open 관련 질문 39강 5분 36초
0
25
2
39강 루트 용어 질문
0
24
2
디렉토리 위치 바탕화면
0
33
2





