리믹스와 함께 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.)