티스토리 뷰
개발 세상/React Native
[ReactNative/RN] ActivityIndicator를 사용하여 로딩(Loading) 컴포넌트를 구현해보자!
썬이_ 2023. 2. 7. 14:37728x90
반응형
데이터를 받아오기도 전에 화면이 렌더링되는 react..
예를 들어 api를 통해 받아온 데이터를 화면에 디스플레이 해줘야 할 때,
분명 해당 데이터를 담는 state는 초기에 undefined이면 무조건 에러가 날 것이다.
그래서 데이터가 들어오면 렌더링이 되게끔 하는 가장 간단한 방법은
...
const [data, setData] = useState<dataProps>();
return data ? (
<View>
<Text>{data.title}</Text>
</View>
) : null
...
이런식으로 data가 들어왔을 때 렌더링이 되게끔 처리해주면 되는데,
null로 처리한다면 데이터가 들어올때까지 빈 화면만 노출될 것이다.
이럴 경우엔 사용자 입장에서 움직이는 로딩 컴포넌트가 있어야 한다.
이 포스팅에서는 로딩 컴포넌트를 간단하게 만들어보는 예제를 다루려 한다.
React Native에서 기본적으로 제공해주는 Props 중 ActivityIndicator가 있다.
말이 어려워보이지만 저 Props 하나로 로딩화면을 구현할 수 있다는 장점이 있다.
아래 코드를 통해 차근차근 살펴보자.
import React from 'react';
import { ActivityIndicator, ViewStyle } from 'react-native';
import styled from 'styled-components/native';
const Wrapper = styled.View`
justify-content: center;
flex: 1;
`;
interface ILoader {
style?: ViewStyle;
}
const Loader = ({ style }: ILoader) => (
<Wrapper style={style}>
<ActivityIndicator color={'green'} size="large" />
</Wrapper>
);
export default Loader;
모든 프로젝트에서 계속 utils에 넣고 사용하고 있는 Loader.tsx 스크립트 파일이다.
뭐... 워낙 간단해서 따로 설명할건 없을 것 같다.
이제 다른 컴포넌트에서 아래와 같이 사용된다면 null을 사용할 때보다는
UX적으로 아주 괜찮은 화면이 나올 것이다.
...
import Loader from '../utils/loader.tsx';
...
const [data, setData] = useState<dataProps>();
return data ? (
<View>
<Text>{data.title}</Text>
</View>
) : <Loader />
...
자세한 내용 등은 공식문서를 통해 확인해보자.
728x90
반응형
'개발 세상 > React Native' 카테고리의 다른 글
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스파르타코딩클럽
- ChatGPT
- JavaScript
- build
- 앱개발
- useState
- Firebase
- useEffect
- typeScript
- Android
- gradle
- 코린이
- CSS
- ios
- React Native
- Ai
- 영종도데이트
- Xcode
- vsC
- REACT
- app
- React Hooks
- Mac
- It
- IMAGE
- FlatList
- vscode
- ReactNative
- rn
- TS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함