如何在NextJS中更改路由时显示加载进度条?

8 浏览
0 Comments

如何在NextJS中更改路由时显示加载进度条?

我正在尝试在路由更改时添加加载指示器,并遇到了一些问题。

我按照next.js文档中描述的方式进行了设置,也尝试了这篇文章中的方法,但是加载进度条似乎没有显示出来,尽管在控制台中我可以看到加载和加载完成的路由。

_app.tsx

import { ThemeProvider } from '@mui/styles'
import type { AppProps } from 'next/app'
import { useRouter } from 'next/router'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import React, { useEffect } from 'react'
import { Hydrate, QueryClient, QueryClientProvider } from 'react-query'
import { ReactQueryDevtools } from 'react-query/devtools'
import Layout from '../components/Layout'
import ContextProvider from '../contexts/ContextWrapper'
import '../public/nprogress.css'
import theme from '../src/theme'
import '../styles/globals.css'
function MyApp({ Component, pageProps }: AppProps) {
  const [queryClient] = React.useState(() => new QueryClient())
  const router = useRouter()
  useEffect(() => {
    const handleStart = (url: string) => {
      console.log(`加载中: ${url}`)
      NProgress.start()
    }
    const handleStop = (url: string) => {
      console.log(`完成: ${url}`)
      NProgress.done()
    }
    router.events.on('routeChangeStart', handleStart)
    router.events.on('routeChangeComplete', handleStop)
    router.events.on('routeChangeError', handleStop)
    return () => {
      router.events.off('routeChangeStart', handleStart)
      router.events.off('routeChangeComplete', handleStop)
      router.events.off('routeChangeError', handleStop)
    }
  }, [router])
  return (
    
      
        
          
            
              
            
          
        
        
      
    
  )
}
export default MyApp

非常感谢您的帮助。

0
0 Comments

问题原因:用户想要在NextJS中切换路由时显示加载进度条,但目前的代码实现中没有成功显示进度条。

解决方法:使用"next-progress"包来实现加载进度条,只需将添加到代码中即可。

文章内容如下:

在NextJS中切换路由时显示加载进度条的方法

如果你也遇到了这个问题,我成功通过使用"next-progress"包来实现路由切换时的加载进度条。

只需要在代码中添加,就可以实现这个功能。

以下是修改后的代码示例:

return (
  
    
      
        
          
            
            
          
        
      
      
    
  
)

如果你是通过上述的简单设置来实现加载进度条的,是否成功了呢?我的进度条仍然无法工作。我在想是否有什么配置设置我漏掉了。

我没有再尝试过其他方法,因为"next-progress"包对我来说已经可以正常工作了。

谢谢。我的路由变化甚至没有在控制台中打印出来。让我继续调查一下。

0