Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Vanilla
- 코코아톡
- react
- react-native
- 마무리
- 느낀 점
- Nomad
- 바닐라 자바스크립트
- javascript
- scflix
- CSS
- expo
- Project
- react-hook
- Hook
- coding
- Firebase
- Nicolas
- vanilla js
- 계획
- 프로젝트
- Netflix
- 오류
- github
- Nomad coder
- 클론코딩
- TiMER
- 자바스크립트
- HTML
- Clone
Archives
- Today
- Total
꾸매코딩
[React-Native] Dimensions.get() 을 쓰면 안되는 이유 본문
반응형
Dimensions 이란?
RN에서 Dimensions은 보통 기기의 width(너비) 값, height(높이) 값을 구할 때 사용한다.
덧붙이자면, 다양한 (iOS, AOS) 기기의 자체의 width 와 height 값을 통해 의도한 UI를 구현하기 위해 사용한다.
Dimensions.get() 을 쓰면 안되는 이유
가로모드, 세로모드에 따른 변화된 width, height 값을 바로 불러오지 못한다.
처음 가져온 화면 크기에 고정된다.
대안
- useWindowDimensions() 사용
- Dimesions과 useState, useEffect를 활용
내가 생각하는 가장 좋은 대안은 react-native 에서 지원하는 useWindowDimensions() hook을 사용하는 것이다.
두번째 대안으로는 Dimesions를 useState와 useEffect로 값의 변화를 체크하는 것이다.
useWindowDimensions()
useWindowDimensions() 은 react-native 공식 문서에서도 나와있는 대안이다.
화면 변경, 즉 가로모드 세로모드 등의 변화가 있을때 값을 바로 업데이트 해준다.
useWindowDimensions() 사용
react-native 에서 지원하기 때문에 따로 라이브러리를 설치할 필요가 없다.
import {useWindowDimensions} from 'react-native';
const {width, height} = useWindowDimensions();
Dimensions과 useState, useEffect 활용
const windowWidth = Dimensions.get('window').width;
const windowHeight = Dimensions.get('window').height;
// state에 기기 widht, height 초기값 저장
const [deviceWidth, setDeviceWidth] = useState(windowWidth);
const [deviceHeight, setDeviceHeight] = useState(windowHeight);
// dimesions에 대한 변화가 일어날때 변화된 width, height 값 저장
useEffect(() => {
const updateDimensions = () => {
setDeviceWidth(Dimensions.get('window').width);
setDeviceHeight(Dimensions.get('window').height);
};
const dimensionsHandler = Dimensions.addEventListener(
'change',
updateWidth,
);
return () => dimensionsHandler.remove();
}, []);
참고 자료
https://reactnative.dev/docs/0.66/dimensions
반응형