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 |
Tags
- 리액트
- useEffect
- 혼공챌린지
- styledcomonents
- 혼공머신
- error맛집
- js
- 백준 #코딩테스트 #코테 #알고리즘
- 코딩테스트
- 머신러닝
- TS
- 타입스크립트
- axios
- 혼공단
- reactmemo
- typeScript
- 혼자공부하는머신러닝딥러닝
- REACT
- 구조분해할당
- CSS
- 백준
- 백준 #코딩테스트
- 딥러닝
- 알고리즘
- 에러해결방안
- 혼자공부하는머신러닝
- Redux
- 유니티 #게임개발
- clipboardapi
- 초기값 설정하기
Archives
- Today
- Total
좌충우돌 개발자의 길
[React] 로딩 띄우기와 통신 중 방해 금지 기능 본문
1. 로딩
- 데이터가 아직 렌더링 안되었을 때 loading 뜨게 하기
import { Link } from "react-router-dom";
import useFetch from "../hooks/useFetch";
export default function DayList() {
const days = useFetch("http://localhost:3001/days");
if (days.length === 0) {
return <span>Loading...</span>;
}
...
}
2. 통신 중에 버튼 클릭시 반응없게 하기
const [isLoading, setIsLoading] = useState(false);
function onSubmit(e) {
e.preventDefault();
if (!isLoading) { //isLading이 false일 때,
setIsLoading(true); //true로 바꿔주고
fetch(`http://localhost:3001/words/`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
day: dayRef.current.value,
eng: engRef.current.value,
kor: korRef.current.value,
isDone: false,
}),
}).then(res => {
if (res.ok) {
alert("생성이 완료 되었습니다");
history.push(`/day/${dayRef.current.value}`);
setIsLoading(false); //통신이 끝나면 false로 다시 바꿔줌
}
});
}
}
...
<button
style={{
opacity: isLoading ? 0.3 : 1,
}}
>
{isLoading ? "Saving..." : "저장"} //isLoading이 true 면 saving, false면 저장
</button>
출처 : 코딩앙마
'STUDYING > React' 카테고리의 다른 글
[React] class에서 props로 부모와 자식 간의 데이터를 교환해보자 (0) | 2022.06.04 |
---|---|
[React] 프레임워크 vs 라이브러리 (0) | 2022.05.31 |
[React] CRUD (0) | 2022.05.28 |
[React] Clipboard API (0) | 2022.05.26 |
[React] 리액트 의문이 들었던 부분을 정리해보자 (0) | 2022.05.24 |