如何添加将使用 react-router-dom 渲染组件的路由?

Posted

技术标签:

【中文标题】如何添加将使用 react-router-dom 渲染组件的路由?【英文标题】:How to add a route that will render a component using react-router-dom? 【发布时间】:2021-05-01 07:52:36 【问题描述】:

目前,组件SinglePostPage中的代码如下:

        <section>
            <article className="post">
                <h2>post.title</h2>
                <p className="post-content">post.content</p>
                <Link to=`editPost/$post.id` className="button">
                    Edit Post
                </Link>
            </article>
        </section>

EditPostForm 组件包含用于编辑帖子的表单。 当有人点击Link 时,如何添加路由以呈现EditPostForm 组件?

我的App.js如下:

function App() 
  return (
    <Router>
      <Navbar />
      <div className="App">
        <Switch>
          <Route
            exact
            path="/"
            render=() => (
              <React.Fragment>
                <AddPostForm/>
                <PostsList/>
              </React.Fragment>
            )
          />
          <Route exact path="/posts/:postId" component=SinglePostPage />
          <Redirect to="/" />
        </Switch>
      </div>
    </Router>
  )


export default App

【问题讨论】:

【参考方案1】:

我相信您可以向 App.js 添加一条新路由。例如:

function App() 
  return (
    <Router>
      <Navbar />
      <div className="App">
        <Switch>
          <Route
            exact
            path="/"
            render=() => (
              <React.Fragment>
                <AddPostForm/>
                <PostsList/>
              </React.Fragment>
            )
          />
          <Route exact path="/posts/:postId" component=SinglePostPage />
          <Route exact path="/editPost/:id" component=EditPostForm />
          <Redirect to="/" />
        </Switch>
      </div>
    </Router>
  )


export default App;

然后在 SinglePostPage 中,您的链接路径略有错误,应该是:

<Link to=`/editPost/$post.id`>...</Link>

你错过了第一个'/'

【讨论】:

试过了,但&lt;Link&gt; 现在重定向到主页视图 我尝试删除 &lt;Redirect to="/" /&gt; 行,但随后 &lt;Link&gt; 导航到没有任何内容的 URL http://localhost:3000/posts/editPost/1 @Harish 好的,您可以在代码沙箱上创建一个可重现的版本,以便我可以调试。谢谢 我将尝试创建一个 Codepen。如果您想查看应用程序的其余部分,请参阅本教程:redux.js.org/tutorials/essentials/part-4-using-data 是的!更新链接解决了我的问题。

以上是关于如何添加将使用 react-router-dom 渲染组件的路由?的主要内容,如果未能解决你的问题,请参考以下文章

React JS如何使用react-router-dom将数组作为参数传递

使用 react-router-dom 在 Route 中添加组件作为道具

如何使用 react-router-dom 创建动态路由?

React-router-dom:点击Link无限期添加到Url Link的路由

如何在 React.js 中使用 react-router-dom 保持 App() 级别状态不重置?

React-router-dom 和 Redirect 未添加到历史记录中?