728x90
반응형
React Spinner axios interceptor에 적용하기
mobx를 사용해서 store 관리를 하고 있는 프로젝트에 spinner를 적용하게 되어 그 과정을 기록할 것임
React Spinner 설치
yarn add react-spinners
# or
npm i react-spinners
Spinner component 생성
스피너 모양은 react-spinners demo 페이지에서 확인 가능
예시
import React from 'react';
import MoonLoader from "react-spinners/MoonLoader";
import { AppStore } from '../store/AppStore';
const Spinner = () => {
return (
<div
className="spinner"
style={{width: '100vw', height: '100vh', position: 'absolute',zIndex: '10',left: '0',top: '0',right: '0',bottom: '0',backgroundColor: 'rgba(0,0,0,0.2)',display: 'block'}}
>
<div style={{display: 'flex', justifyContent: 'center', alignItems: 'center', minHeight: '100vh'}}>
<MoonLoader
color="red"
loading={AppStore.isRunnig}
size={30}
/>
</div>
</div>
);
};
export default Spinner;
AppStore에 등록
예시
import { observable } from "mobx";
export const AppStore = observable({
isRunnig: false,
/* 스피너 작동 */
setRunningSpinner() {
this.isRunnig = true;
},
/* 스피너 중지 */
setStopSpinner() {
this.isRunnig = false;
},
})
axios interceptor에 등록
api 통신중에는 spinner 활성화, 통신완료되면 spinner 비활성화됨
예시
import { AppStore } from '../store/AppStore';
axios.interceptors.request.use(
config => {
AppStore.setRunningSpinner();
return config;
},
error => Promise.reject(error)
);
axios.interceptors.response.use(
async(config) => {
AppStore.setStopSpinner();
return config;
},
async(error) => {
AppStore.setStopSpinner();
return Promise.reject(error);
}
);
참고 자료 : https://www.npmjs.com/package/react-spinners?activeTab=readme
반응형
'프로그래밍 > React' 카테고리의 다른 글
[React] Module not found... 에러 해결 방법 (0) | 2023.08.23 |
---|---|
[React] React와 Spring Boot 연동하기 (0) | 2023.07.27 |
[React] axios progress bar 추가 (0) | 2023.07.10 |
[React] react-to-print 사용 방법 (0) | 2023.06.19 |
[React] CSR(Client-side Rendering)과 SSR(Server-side Rendering)의 차이 (0) | 2023.06.16 |