React.js 에서 API 로딩 처리하기
- 웹 브라우저에 API가 호출되어서 랜더링이 진행되어야 하는데 그렇지 않은 경우에 사용자에게 로딩 화면만 출력이 되도록 구성해보겠다.
- https://material-ui.com/components/progress/ 를 이용해서 API 로딩 처리를 진행해보겠다.
0️⃣ 필요한 라이브러리 불러오기
필요한 라이브러리를 import 해준다.
import CircularProgress from '@material-ui/core/CircularProgress';
1️⃣ state를 추가하기
progress bar
는 0%부터 100%까지 충전이 되듯이 애니메이션이 보여지게 된다. 그렇기 때문에 completed
라는 변수를 만들어서 0이라는 값을 넣어 주었다.
state = {
completed : 0
}
2️⃣ progress 함수를 만들기
completed state
변수를 가져올 수 있도록 한다.progress = () => { const { completed } = this.state; }
- 계속해서
progress()
함수가 불러와지면서completed
값이 변할 수 있도록 설정해준다.completed
가 100이 되는 순간 0으로 줄어들 수 있도록하고, 그렇지 않으면 계속해서 1씩 증가할 수 있도록 설정한다progress = () => { const { completed } = this.state; this.setState({ completed : completed >= 100 ? 0 : completed + 1 }); }
3️⃣ componentDidMount()에 타이머를 이용하여 progress 함수를 호출할 수 있도록 한다.
componentDidMount(){
// 0.02초 마다 progress 함수가 실행 될 수 있도록 설정
this.timer = setInterval(this.progress, 20);
}
4️⃣ 랜더링 되는 부분에 progress bar가 출력될 수 있도록 설정한다.
: 이후의 값 즉 this.state.customers
가 호출되지 않았을 때의 출력값을 설정해준 것이다.
<TableBody>
{
this.state.customers ? true이면 이 부분 실행
:
<TableRow>
<TableCell colSpan = "6" align = "center">
<CircularProgress className = { classes.progress } varient = "determinate" value = {this.state.completed}/>
</TableCell>
</TableRow>
}
</TableBody>
5️⃣ 마무리
이를 통해서 간단하게 loading창을 구현해볼 수 있었다.
728x90
반응형
'Tech > React' 카테고리의 다른 글
[React] 부모 컴포넌트의 상태 변경을 통한 고객 정보 갱신 (0) | 2021.03.18 |
---|---|
[React] 고객 추가 양식(form) 구현 및 이벤트 핸들링 (0) | 2021.03.17 |
[React] state (상태) (0) | 2021.02.12 |
[React] state 사용 2 (0) | 2021.01.12 |
[React] State 사용 (class 컴포넌트) (0) | 2021.01.07 |