如何反应加载主页然后路由到其他人

Posted

技术标签:

【中文标题】如何反应加载主页然后路由到其他人【英文标题】:How to have react load Home page and then route to others 【发布时间】:2021-09-25 04:37:42 【问题描述】:

我有一个基本的投资组合应用程序,其结构如下:

App.js

function App() 
  return (
    <BrowserRouter>
    <LeftNav />
    <RightNav />
    <NavBar />
      <Switch>
        <Route component=Home path='/' exact />
        <Route component=About path='/about' />
        <Route component=Project path='/projects' />
        <Route component=Contact path='/contact' />
      </Switch>
    </BrowserRouter>
  )

当我单击链接转到生产站点时,它只呈现 LeftNav、RightNav 和 Navbar。我必须单击 Home 组件才能加载主屏幕。

然后我尝试将 Home 组件放在外面,如下所示:

function App() 
  return (
    <BrowserRouter>
    <LeftNav />
    <RightNav />
    <NavBar />
    <Home />
      <Switch>
        <Route component=Home path='/' exact />
        <Route component=About path='/about' />
        <Route component=Project path='/projects' />
        <Route component=Contact path='/contact' />
      </Switch>
    </BrowserRouter>
  )

这是我在单击链接时想要的操作,但是我的组件不会加载。我该如何构建它,以便 Home 组件在初始点击时加载并且我能够导航到其他页面?

【问题讨论】:

【参考方案1】:

您将不得不从默认页面交换您的主页路径:

        <Route component=Home path='/' exact />

        <Route component=Home path='/home' exact />          

然后将“重定向”添加到您的 App.js :

    <Route path="/" exact>                               
      <Redirect to="/home" />
    </Route>

【讨论】:

【参考方案2】:

您的第一个版本很好,只需添加重定向并更改主路径

import React from 'react';
import BrowserRouter, Switch, Route, Redirect from 'react-router-dom';  // import Redirect

function App() 
  return (
    <BrowserRouter>
    <LeftNav />
    <RightNav />
    <NavBar />
      <Switch>
        <Route component=Home path='/home' exact />          // change the path
        <Route component=About path='/about' />
        <Route component=Project path='/projects' />
        <Route component=Contact path='/contact' />
        <Route path="/" exact>                                 // Add the redirect
          <Redirect to="/home" />
        </Route>
      </Switch>
    </BrowserRouter>
  )

【讨论】:

这非常有效。所以基本上重定向接受 Home 组件并在点击主 URL 时重定向它? 主url“/”将用户重定向到“home”,如果用户点击“home”,它将到达“home”(这是有道理的)

以上是关于如何反应加载主页然后路由到其他人的主要内容,如果未能解决你的问题,请参考以下文章

使用反应路由器从主页重定向到特定页面后访问从 NavLink 传递的数据

如何在不显示第一个组件的情况下将组件路由到另一个组件? - 角

登录页面后反应路由器 v6 不会切换到主页:警告:无法对未安装的组件执行 React 状态更新

Vue路由器在重新加载时重定向到主页

使用带反应路由器的锚点

页面在刷新时不加载 - react-router-dom