안녕하세요 navigation.push 성능에 대해 질문드립니다
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
답변 1
1
이건 당연히 트레이드오프일 수밖에 없습니다. 기존 화면들 위에 다른 화면을 쌓으면 컴포넌트 수가 계속 늘어나니 어쩔수가 없죠. navigate를 하면 성능은 좋지만 한 페이지 내에서 바꾸는 것이니 이전 페이지로 갈 때 이상해지고요.
말씀하신대로 push 후에 뭔가 비교를 해서 리렌더링을 안 하도록 작성하셨으면 끝까지 그 방식으로 하시면 되는 것 아닌가요? 이전 데이터들도 전부 페이지별로 리덕스에 저장해놓으면 되지 않나요?
useIsFocused 훅도 괜찮은 것 같습니다. 포커스가 풀린 페이지는 아무것도 렌더링하지 않게끔요.
0
답변 감사합니다
useIsFocused 훅과'전부 페이지별로 리덕스에 저장'하는 방법을 전부 테스트 해 보았습니다
현재 제 앱에 맞는 후자의 방식으로 결정했습니다 도움 주셔서 감사합니다 ㅎㅎㅎ
추가로 질문을 드리면,
navigate와 push의 차이점에서 더 나아가, 각각의 성능이슈들은 닥스를 통해서가 아니라, 실제 개발을 하면서 부닥쳐가야지만 알 수 있는 것들인가요?
이번 이슈를 계기로, react navigation 성능적인 부분이 궁금해서, bottom tab과 top tab 에 대해서도 각각 콘솔을 찍어서 '유저가 보고 있는 스크린'이 아닌, 다른 스크린도 렌더링 되는지를 체크 했습니다
유저가 보고있는 스크린이 아닌 다른 스크린에서도 렌더링이 일어나는 걸 알 수 있었는데요.
이러한 부분을 보면서, '왜 닥스를 읽었는데, 저런 부분을 알지 못했을까' 하는 생각이 들었습니다.
조현영님의 답변을 보고 닥스를 다시 읽어봤는데, navigation.push와 navigation.navigate의 차이에 대해서는 나와있지만, 각 케이스별로 이러이러한 성능이슈가 있을 수 있다~( 또한, bottom tab과 top tab에 대해서도 마찬가지였습니다 ), 등의 내용을 발견하지를 못했씁니다. 그저 문서에 나와있는 그대로를 받아들였습니다
레딧에서 저와 비슷한 이슈를 겪은 글을 봤는데, 거기서 어떤 유저는 push가 아니라 navigate를 주로 쓴다고 하더라구요. push 를 쓰면 저와 같은 이슈를 겪을 수밖에 없다고..
하지만, push는 그대로 살려둔 채, 조현영님의 답변을 참고해서 제 문제를 해결한 걸 보면, 어떤 쪽을 선택해야하는지에 대해서 필요한 조건은, '자기가 직접 부딫친 경험' 뿐인가 하는 생각도 들었습니다.
0
사실 남이 만든 라이브러리이기때문에 그 사람이 설명을 하지 않으면 사용자들의 경험을 토대로 판단할 수밖에 없습니다. 그나마 오픈소스이므로 깃헙 이슈에 비슷한 고민을 겪은 사람들의 질문이 많이 있습니다. 그걸 보고 참고할 수밖에 없습니다.
앱실행시 네이버맵 [401] 에러
0
1044
2
스타일링 라이브러리
0
159
2
expo, cli 선택 중에 고민이 있습니다.
0
175
2
JDK 버전이 달라도 괜찮나요?
0
236
2
dimenstion usewindowdeminstion
0
129
3
[맥 전용]환경 설정하기 1편 & [맥 전용]환경 설정하기 2편의 영상이 안나옵니다.
0
215
1
jdk11 버전과 gradle 버전의 호환성 관련 질문드립니다.
0
407
2
강의 외 질문입니다!
0
163
2
react native랑 맞는 ui 라이브러리 어떤게 좋을까요?
0
1534
2
react native와 spring boot 연결
0
362
1
java가 아닌 .kt에서 code push 에러가 발생합니다.
0
219
2
flipper 239 에러가 발생합니다.
0
169
2
package.json에 /lib/panino.js 문제입니다.
0
476
2
window - mac 협업 과정 질문합니다
0
221
1
ios 빌드 중 RCTBridgeDelegate.h import 오류
0
293
2
ios 앱 빌드 중 hermesEnabled 관련 오류발생
0
246
2
Socket 연결시 질문 드립니다.!
0
155
2
wifi 환경에서 axios 통신이 로컬서버에서 안됩니다.
0
429
2
iOS render error 질문드립니다.
0
416
2
iOS 가상머신 오류
0
170
2
npc react init 명령어 실행시 발생되는 오류
0
223
1
nom start 시 오류
0
119
1
NextJS 기반으로 만들어서 웹뷰 React Native로 배포 가능한가요?
0
1013
2
안드로이드 rn75 버전에 맞게 설정 중에 android13 다운로드에 대해서 막혔습니다!
0
187
2





