当前位置: 首页 > 知识库问答 >
问题:

如何在React路由器中嵌套动态页面路由组件?

赫连越
2023-03-14

我正在使用React制作一个动态网页。我正在使用React Routers中的一个交换机组件,根据用户的需要,将主页更改为其他各种页面。我希望通过以下路由创建新帐户:

主页

我的问题在于从第三个创建帐户页面返回主页或登录页面。我可以创建链接,使我从第1页

最初,我在createaccount页面中有一个switch语句,呈现三个独立的组件。如果我在这个switch语句中设置了route home,div就会像预期的那样在其中呈现home。如果我只是省略了路由,当我点击链接时,页面将无法呈现,但显然有正确的路径,因为刷新时它将正确加载。我也尝试过:移动路由器以限定整个组件,而不仅仅是交换机组件。在文档中的任何内容之前将路由移动到主页-正如预期的那样,这只是在激活路由时将主页呈现在“创建帐户”页面上方。在Switch语句内部和外部使用重定向。在div中呈现对象内部“组件”键的值,并在单击链接时手动更新该对象中的值,而不是使用任何与路由器模糊关联的东西,这是一种非常糟糕的方法。这比它应该做的更好,但并不完美。

**作为一种旁注,我被告知(尽管我没有个人经验)Vue有一个“步进器”,可以用来浏览第1、2和3页,以避免使用嵌套路由器。React或React路由器中有这样的东西吗?

应用程序:

function App() {
  return (

    <Router>
      <Switch>
        <Route exact path="/" component={Home} />
        <Route path="/Login" component={Login} />
        <Route path="/CreateAccount" component={CreateAccount} />
        <Route path="/Account_Recovery" component={Recovery} />
        <Route path="/RR_One" component={RR_One} />
      </Switch>
    </Router>

  );
}

现在存在的创建帐户页面:

class CreateAccount extends React.Component {
  render() {
    return (

    <Router>
      <PageHeader pageTitle="Create a Free Account"/>

      <div className="pageBody">
        <div className="centerHalf">

            <Route path="/CreateAccount/1" component={PageOne} />
            <Route path="/CreateAccount/2" component={PageTwo} />
            <Route path="/CreateAccount/3" component={PageThree} />

        </div>
        <p>Paragraph outside of the changing div.</p>
      </div>

    </Router>
)}};

一个示例组件PageIII(其他组件现在类似,只是相互链接):

class PageThree extends React.Component {
  render() {
    return (
      <div>
        <p>Page Three</p>
        <Link to={{pathname: "/CreateAccount/2"}}>Go to page 2</Link> <br />
        <Link to={{pathname: "/Login"}}>Complete</Link>
      </div>
)}};

共有1个答案

姜鸿
2023-03-14

解决方案其实非常简单:我误解了路由器组件的用途,而这些组件的嵌套(不是switch语句或路由)才是真正的问题。通过删除内部路由器组件(在我的例子中,是CreateCount组件中的一个),导航能够从第三页平滑地返回到外部页面。

class CreateAccount extends React.Component {
  render() {
    return (

    <div>

      <PageHeader pageTitle="Create a Free Account"/>

      <div className="pageBody">
        <div className="centerHalf">

            <Route path="/CreateAccount/1" component={PageOne} />
            <Route path="/CreateAccount/2" component={PageTwo} />
            <Route path="/CreateAccount/3" component={PageThree} />

        </div>
        <p>Paragraph outside of the changing div.</p>
      </div>

    </div>
)}};
 类似资料:
  • 问题内容: 我有以下路由配置: GuaranteeLoggedInContainer为: 但是,历史的推动力:没有用。这里没有历史。 如果我使用这样的配置: 我遇到类似的问题: reactjs中最好的身份验证方法是什么? 问题答案: 从我对您的React Router设计的了解中,您似乎正在使用React Router版本4 在这种情况下,您可以在组件本身中指定路由,并利用withRouter进行

  • 如果我将路由折叠起来,这样看起来就像: 工作很好。我嵌套的原因是因为我将在“dashboard”下有多个子项,并且希望它们都在URL中以为前缀。

  • 我在想这样的事情: 前台有一个不同的布局和风格与管理区域。所以在frontpage中的路由是home、about等等,其中一个应该是子路由。 /home应该呈现到Frontpage组件中,而/admin/home应该呈现在后端组件中。 最终解决方案: 这是我现在使用的最终解决方案。这个例子也像传统的404页面一样有一个全局错误组件。

  • 本文向大家介绍详解vue路由篇(动态路由、路由嵌套),包括了详解vue路由篇(动态路由、路由嵌套)的使用技巧和注意事项,需要的朋友参考一下 什么是路由?网络原理中,路由指的是根据上一接口的数据包中的IP地址,查询路由表转发到另一个接口,它决定的是一个端到端的网络路径。 web中,路由的概念也是类似,根据URL来将请求分配到指定的一个'端'。(即根据网址找到能处理这个URL的程序或模块) 使用vue

  • 我需要多个嵌套路由 我用的是react-router-dom的v4 我有我的 我需要组件渲染成这样 Home组件包含Page1、Page2和Page3组件共有的标题组件,但不存在于Login和About中。 我的js代码是这样读的 我希望登录组件只显示在 /login当我请求 /page1、 /page2、 /page3时,它们应该分别包含主页组件和该页面的内容。 取而代之的是呈现的登录组件,在该

  • 问题内容: 有没有办法在React Router v4中嵌套路由? 这有效: 这不是: 客户组成部分: 问题答案: 到目前为止,我发现的最佳模式。 我可以继续将其嵌套在组件中,并且一切都很好,包括hmr(如果使用webpack,请不要忘记设置为)