Routes 什么';这个子程序怎么了?

Routes 什么';这个子程序怎么了?,routes,react-router-dom,router,Routes,React Router Dom,Router,我正在学习“react router dome”,这是我使用它的博客项目 主路由页面-app.js <Route exact path="/" component={LandingPage} /> <Route exact path="/post/personal" component={PersonalPage} /> <Route exact path="

我正在学习“react router dome”,这是我使用它的博客项目

主路由页面-app.js

          <Route exact path="/" component={LandingPage} />
          <Route exact path="/post/personal" component={PersonalPage} />
          <Route exact path="/post/something" component={SomethingPage} />
          <Route exact path="/post/javascript" component={JavascriptPage} />
          <Route exact path="/post/react" component={ReactPage} />
 <Route
            render={() => (
              <div
                style={{
                  padding: "20px",
                  width: "280px",
                  margin: "0 auto",
                  fontWeight: "bold",
                }}
              >
                Worng Page found
              </div>
            )}
          />
<Route exact path ="/post/personal/:postId

(
找到工作页
)}
/>
/post/personal-PersonalPage

   <Link className="more" to={`/post/personal/${value._id}`}>
          Click&gt;
        </Link>
      
        <Route
          exact
          path={`/post/personal/:postId`}
          component={PersonalDetailPage}
        />

点击
我的想法是,如果我按下“点击链接”按钮,我会进入路线[PersonalDetailPage]。 但是我的代码不起作用,并且PErsonalDetailPage没有显示

屏幕仅显示“找到错误页面”

但是如果你用这种方式编写代码,它就可以正常工作

app.js

          <Route exact path="/" component={LandingPage} />
          <Route exact path="/post/personal" component={PersonalPage} />
          <Route exact path="/post/something" component={SomethingPage} />
          <Route exact path="/post/javascript" component={JavascriptPage} />
          <Route exact path="/post/react" component={ReactPage} />
 <Route
            render={() => (
              <div
                style={{
                  padding: "20px",
                  width: "280px",
                  margin: "0 auto",
                  fontWeight: "bold",
                }}
              >
                Worng Page found
              </div>
            )}
          />
<Route exact path ="/post/personal/:postId

路由的问题在于您在所有顶级路由上定义了精确的属性。现在,当您这样做时,嵌套路由无法呈现,因为父路由与整个路径不匹配

例如,如果您访问
/post/personal/5
,则路径
/post/personal
呈现
PersonalPage
组件与它完全不匹配,并且由于PersonalPage不会重新呈现,因此它的任何子例程都不匹配

解决方法是使用组件,而不是使用精确的属性,并按顺序定义路由,以便前缀路径位于末尾

 <Switch>
      <Route  path="/post/personal" component={PersonalPage} />
      <Route  path="/post/something" component={SomethingPage} />
      <Route  path="/post/javascript" component={JavascriptPage} />
      <Route  path="/post/react" component={ReactPage} />
      <Route
        render={() => (
          <div
            style={{
              padding: "20px",
              width: "280px",
              margin: "0 auto",
              fontWeight: "bold",
            }}
          >
            Worng Page found
          </div>
        )}
      />
     <Route  path="/" component={LandingPage} />
 </Switch>

(
找到工作页
)}
/>

p.S.交换机组件在其子系统中呈现第一条匹配的路由

这很简单。谢谢你的解释。