【问题标题】:history.push() does not updates browser's urlhistory.push() 不会更新浏览器的 url
【发布时间】:2020-05-01 13:42:31
【问题描述】:
<div key={id} onClick={() => clicked(id)}>{name}</div>

在这个被点击的函数中被调用。

const clicked = (id) => {
    history.push(`/user_dashboard/projects/${id}/designs`);
}

这与路线匹配

<PrivateRoute path={match.url + '/:id/designs'} exact component={Designs} />

我有一个带有此路由的路由文件,它会打开包含所有用户项目的仪表板

<PrivateRoute path='/user_dashboard/projects' exact component={Dashboard} />

在仪表板中,它会显示一个包含所有项目的工具栏,如果用户单击任何项​​目,它会显示与该项目相对应的相关设计。

<Toolbar />
<PrivateRoute path={match.url} exact component={Projects} />
<PrivateRoute path={match.url + '/:id/designs'} exact component={Designs} />

我需要在两条路线中保持工具栏固定。我该怎么办? 如果您发现任何错误,请告诉我。

【问题讨论】:

  • 请详细说明您的问题。你是如何定义历史的。您的问题的演示会很棒
  • 是的,我已经在 const createHistory = require('history').createBrowserHistory; 中定义了历史;
  • 我已经添加了更多细节,请检查。
  • 你是如何定义你的路由器的,这条信息很重要。此外,您的问题的演示复制将有助于提供解决方案。到目前为止,人们只会在黑暗中射箭
  • 我发现了错误,它是“确切”在制造大惊小怪的路线中。将其从设计路线中移除是可行的。感谢您的帮助。

标签: reactjs react-router react-router-dom react-router-v4


【解决方案1】:

您可以使用react-router-dom 中的Link 而不是以编程方式更新网址。

<Link to={`/user_dashboard/projects/${id}/designs`} key={id}>{name}</Link>

这将为您处理 url,在引擎盖下它是一个锚标记。

您可以了解更多信息here

【讨论】:

  • 它更新了 URL,但它没有在 DOM 上呈现任何内容。我已为我的问题提供了更多详细信息,请查看。
  • 如果您可以将可演示的应用程序托管在代码沙箱或其他地方并分享链接,这将有助于更好地理解和调试。
  • 我发现了错误,它是“确切”在制造大惊小怪的路线中。将其从设计路线中移除是可行的。感谢您的帮助。
【解决方案2】:

我可以看到的第一个错误是您没有对路径属性使用字符串插值,所以应该是

path={`${match.url}/:id/designs`}

我认为您需要提供更多详细信息,以便我们正确地帮助您解决此问题。

【讨论】:

  • 我已为我的问题提供了更多详细信息,请查看。我所做的与您的字符串插值解决方案的工作相同。
猜你喜欢
  • 2021-10-03
  • 2017-08-13
  • 1970-01-01
  • 2021-02-14
  • 2016-07-13
  • 2020-09-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-26
相关资源
最近更新 更多