Global Pending UI

김동현·2023년 3월 21일
0

React Router

목록 보기
16/31

사용자가 앱을 탐색할 때, React Router는 데이터를 로딩하는 동안 이전페이지를 남겨둔다.

클릭해도 앱이 반응하지 않는 느낌이 들 수 있다.

그런 느낌이 들지 않도록 몇가지 피드백을 제공해보자.

React Router는 백그라운드에서 모든 상태를 관리하고 동적 웹 앱을 구축하는 데 필요한 일부만을 표시한다.

useNavigation Hook을 이용해보자.

// 📄src/routes/root.jsx

import {
  // existing code
  useNavigation,
} from "react-router-dom";

// existing code

export default function Root() {
  const { contacts } = useLoaderData();
  const navigation = useNavigation();

  return (
    <>
      <div id="sidebar">{/* existing code */}</div>
      <div
        id="detail"
        className={
          navigation.state === "loading" ? "loading" : ""
        }
      >
        <Outlet />
      </div>
    </>
  );
}

useNavigation 은 현재 navigation state를 반환한다.

이 반환값은 "idle" , "submitting", "loading" 중 하나이다.

위의 코드에서는 state가 loading일때 클래스에 loading을 추가한다.

그런 다음 그 클래스를 기반으로 CSS를 만져주면 된다.

보통 fade처리 또는 spinner 또는 loading bar 등이 나타나도록 한다.

다음은 CSS로 fade처리를 한 예이다.

출처 : 리액트 라우터 공식 홈페이지➡️

profile
프론트에_가까운_풀스택_개발자

0개의 댓글