리믹스와 함께 Mantine NavigationProgress 사용
7312 단어 tutorialwebdevreactjavascript
<NavigationProgress> 사용
Mantine에는 구성 요소 상태와 상호 작용하기 위한 단일 구성 요소 및 일부 유틸리티 기능이 포함된
@mantine/nprogress
라는 추가 패키지가 있습니다. 아직 설치하지 않은 경우follow the installation instructions first .진행률 표시줄을 트리거하여 증가하기 시작하는 기능
startNavigationProgress
과 진행률 표시줄을 재설정하고 숨기는 기능resetNavigationProgress
에만 관심이 있습니다. UI가 로드 또는 제출 상태에 있을 때마다 진행을 시작하고 UI가 유휴 상태로 돌아갈 때마다 진행을 재설정하도록 이들을 Remix에 연결합니다.구성 요소
<NavigationProgress>
는 기본적으로 React Portal에서 진행률 표시줄을 렌더링합니다. 뷰포트 상단에서 렌더링하는 경우에는 괜찮지만 그렇지 않으면 렌더링해야 할 수 있습니다adjust some of the default props.리믹스 useTransition 후크
Remix는 응용 프로그램에서 로더 또는 작업의 현재 상태를 노출하는 후크useTransition를 제공합니다. 후크는 전환 유형, 다음 위치 등 전환에 대한 많은 데이터를 노출하지만 우리는
state
에만 관심이 있습니다. 전환이 발생하지 않는 경우state
는 "idle"
가 되고 그렇지 않은 경우 전환 유형에 따라 "loading"
또는 "submitting"
가 됩니다.<GlobalLoadingIndicator> 컴포넌트 구현
이 지식을 사용하여 Remix 전환과 NavigationProgress를 함께 연결하는 작은 구성 요소를 만들 수 있습니다.
import { useEffect } from "react";
import { useTransition } from "@remix-run/react";
import {
NavigationProgress,
resetNavigationProgress,
startNavigationProgress,
} from "@mantine/nprogress";
export const GlobalLoadingIndicator = () => {
const { state } = useTransition();
useEffect(() => {
if (state === "idle") {
// we are idle so hide the progress bar
resetNavigationProgress();
} else {
// we are doing something so show the progress bar
// and allow it to increment
startNavigationProgress();
}
}, [state]);
// I set the stepInterval to 100 so it increases every 100 milliseconds
// but you can set it to something that feels nice for your app
return <NavigationProgress stepInterval={100} />;
};
새 구성 요소 사용
앱에 진행률 표시줄을 포함하는 마지막 단계는 항상 볼 수 있는 위치에 레이아웃에
<GlobalLoadingIndicator>
구성 요소를 렌더링하는 것입니다. 제 경우에는 <MantineProvider>
의 root.tsx
내부에 렌더링합니다. <html lang="en">
<head>
<Meta />
<Links />
<StylesPlaceholder />
</head>
<body style={{ margin: 0 }}>
<MantineProvider
theme={{ colorScheme: "light" }}
withGlobalStyles
withNormalizeCSS
>
{/* Your usage may differ */}
<GlobalLoadingIndicator />
<Outlet />
</MantineProvider>
<ScrollRestoration />
<Scripts />
<LiveReload />
</body>
</html>
좋습니다. 이제 Remix 애플리케이션에 NavigationProgress 구성요소의 기본 구현이 있습니다! 구성 요소 소품을 가지고 놀고 다양한 전환 유형에 반응하여 적합하다고 생각하는 경험을 개선할 수 있습니다.
Reference
이 문제에 관하여(리믹스와 함께 Mantine NavigationProgress 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/donocode/using-mantine-navigationprogress-with-remix-41i7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)