【问题标题】:Props is undefined using react-router-dom使用 react-router-dom 未定义道具
【发布时间】:2021-08-11 16:49:07
【问题描述】:

我正在尝试做的事情:我的主要组件是来自用户的帖子的提要,我想要做的是能够单击一个帖子上的按钮以路由到新的帖子仅显示该帖子及其所有回复的组件。就像 Reddit 一样。我的问题是,当我单击该按钮时,确实会路由到新组件,但我所有的道具都未定义,我无法弄清楚我做错了什么。

所以我的流程是:

布局(带路由器/交换机)--> FeedIndex(带交换机)--> ViewPost

我有一个布局功能组件,它使用路由器、交换机和链接来使用反应路由器 dom。我所有的路线都有效,除了一条。我的开关里面是我的主要组件“/”,它是 FeedIndex。在我的主要组件中,我需要路由到另一个组件。所以布局组件有这个:

<Router>
  <Switch>
    <Route exact path="/">
      <FeedIndex
      token={token}
      firstName={firstName}
      userId={userId}
      />
    </Route>
                    
    <Route path="/post" component={ViewPost} />
  </Switch>
</Router>

然后在 FeedIndex 中,我有一个指向“/post”的链接,然后是另一个 Switch 和 Route,如下所示:

<Switch>
  <Route exact path="/post">
    <ViewPost
    post={post}
    index={index}
    token={token}
    key={index}
    addReply={addReply}
    createReply={createReply}
    replyOn={replyOn}
    replyOff={replyOff}
    getPosts={getPosts}
    replyActive={replyActive}
    />
  </Route>
</Switch>

有什么想法吗?如果需要,我可以发布整个组件的代码。

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:

    您可以使用 react-context 或 react-redux 在整个应用程序的组件之间共享价值。

    【讨论】:

      【解决方案2】:

      为了处理状态,你可以使用 react 上下文提供者:https://reactjs.org/docs/context.html 或 react redux https://react-redux.js.org/

      根据您有多少个州以及您想对它们做什么,您可以选择两者之一。 React-redux 只加载你需要的状态,它更快,但它有一个你需要遵循的特定结构。一开始比较复杂,但可以更轻松地处理多种状态。

      上下文提供程序已经与 react 一起安装,它更容易设置,但速度较慢,因为它会在每次页面加载时加载所有状态。

      【讨论】:

      • 这仅适用于 state 和 App.js 吗?我尝试从 FeedIndex (这是一个道具)反应上下文来传递令牌,它是未定义的。然后我从 App.js 做了它并且它工作了。我需要传递 FeedIndex 中的函数。
      • @hj.paul7 - 例如,使用 Redux,您可以将带有操作的状态添加到存储中。然后,您可以在应用程序的任何位置从商店加载它。重要的是要记住这些是状态而不是 cookie,如果您刷新页面,状态将被设置回初始值。同样,如果您使用 href 例如转发页面,状态将被设置回初始值。看看这个教程:youtube.com/watch?v=CVpUuw9XSjY
      猜你喜欢
      • 2019-02-06
      • 2022-01-12
      • 1970-01-01
      • 2017-08-08
      • 2023-01-28
      • 2016-11-08
      • 2018-04-18
      • 1970-01-01
      • 2022-09-23
      相关资源
      最近更新 更多