如何在React项目中的侧边栏实现路由跳转?

react项目中使用了react-router-dom遇到了一些问题,路由添加失败。看如下代码
layout.tsx:

export default function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  return (
    <ReduxProvider>
    <html lang="en">
      <body
        className={`${geistSans.variable} ${geistMono.variable} antialiased bg-blue-100 `}
      >
        <SidebarProvider>
          <AppSidebar /> // 这个是侧边栏
          <div className="w-full">
            {children}
          </div>

        </SidebarProvider>
      </body>
    </html>
    </ReduxProvider>

  );
}

page.tsx:

function Screen(){
    return (
    <Routes>
        <Route path="/" element={<ChatDialog />}/>
        <Route path="/other" element={<Other />}/>
    </Routes>
    )
}

export default function Home() {
  return (
      <Router>
    <div className="flex h-full">
        <Screen />
      <ToastContainer />
    </div>
      </Router>
  );
}

image.png
我想要在侧边导航栏(<AppSidebar />)中添加路由,但一直失败。这是我侧边导航栏的部分代码:

<SidebarMenu>
              {items.map((item) => (
                  // 标记当前选中的功能(当前功能的背景颜色会标深色)
                <SidebarMenuItem key={item.title} className={` ${item.title === currentModel
                  ? 'bg-gray-200 font-bold text-black' // 选中态样式
                  : 'text-gray-700 hover:bg-gray-100' // 默认态样式
                  }`} onClick={() => handleModelChange(item.title)}>
                  <SidebarMenuButton asChild>
                    <div className="cursor-pointer">
                      <link href="/"></link>
                      <item.icon />
                      <span>{item.title}</span>
                    </div>
                  </SidebarMenuButton>
                </SidebarMenuItem>
              ))}
            </SidebarMenu>

在page.tsx中添加路由的话,我在<AppSidebar />中就不能使用useNavigate()了。请大佬们给我一个解决办法。我希望点击文本生成图像与图像质量检测的页面是不一样的,点击文本生成图像出现的是ai聊天,图像质量检测是另一个页面。我对前端的知识了解比较少。

阅读 285
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏