我使用的是react-router-dom version4.3.1,单击链接后,URL会发生变化,但不会呈现React组件(事实上,调试器不会在代码中的任何位置停止)。我已经尝试使用withcomponent
和except
关键字,但这并不起作用。在以下两种解决方案中提到了它:React router更改url,但不查看;React route使用browserhistory更改url,但什么也不发生;它唯一起作用的时候是使用refresh按钮刷新页面。我正在index.js
中的根
元素中加载路由器:
reactdom.render(
export const AppRouter = () => {
return (
<>
<HashRouter>
<div>
<Switch>
<Route path="/page1" component={Page1} />
<Route path="/page1" component={withRouter(Page2)} /> //still doesn't work
<Route exact path="/" component={Home} />
</Switch>
</div>
</HashRouter>
</>
)}
然后在我的页面中我有:
<Router>
<div>
<Link to={'/page1'}>Page 1</Link>
<Link to={'/page2'}>Page 2</Link>
</div>
</Router>
有趣的是,它还在工作,但在我重新排列组件的加载顺序后,它就停止工作了。如何调试?谢了。
在路由器中嵌套路由器会导致这种问题。单击
后,您将更新顶部
元素中的历史堆栈,而不是
元素中的历史堆栈。我认为,如果删除内部
,一切都应该开始工作。
export const AppRouter = () => {
return (
<>
<HashRouter>
<div>
<Link to={"/page1"}>Page 1</Link>
<Link to={"/page2"}>Page 2</Link>
</div>
<div>
<Switch>
<Route path="/page1" component={Page1} />
<Route path="/page1" component={withRouter(Page2)} /> //still
doesn't work
<Route exact path="/" component={Home} />
</Switch>
</div>
</HashRouter>
</>
);
};
我知道这不是react router的默认行为/功能,可以帮助我们轻松地重新加载当前组件,但我真的需要在我的应用程序中使用它。 我的应用程序处理产品。我有一个可以加载的产品列表,当我单击某个项目时,它会显示相关的产品详细信息。 在该页面上,我有加载相同组件的相关产品链接,但有另一个产品详细信息,位于 我在我的组件willmount中获取数据,似乎如果我只更改URL,就不会装载新组件,因此,我总是显
当我使用url/Details时,我的浏览器会导航到该url,但不会更改视图。任何其他路由抛出404,因此它似乎可以识别路由,但不能更新。
我有一个组件,它显示了可以使用url查询参数过滤的项目列表,这些项目从api分页,如果设置了过滤器,我需要再次调用第一个页面,这个第一次调用是在路由器的解析器中,所以我需要的是路由器以相同的方式重新加载,就像我来自其他URL一样。 app.routes.ts app.resolver.ts app.component.ts app.service.ts 其他.ts组件
有没有可能--在中也这样做? 我为什么需要这个?让我用一个例子来解释: 创建新类别的路由是,在保存时显示,并且要将路由(23-是新项的id存储在数据库中)
问题内容: 当前,我们的项目正在使用default ,而我正在使用此“ hack”来进行更改,而无需重新加载页面: 和在 我想到的替换用筑巢路线,但无法找到这。 有可能吗? 我为什么需要这个?让我用一个例子来解释: 创建新类别的路线是在SAVE 之后显示的,我想将路线更改为(23-是存储在db中的新项目的id) 问题答案: 只需使用即可代替 。内部调用,但会自动将选项设置为。您可以呼叫和设置。例如
问题内容: 我需要在 不更改URL的情况下 进行路由。 在自己实现此功能之前,我尝试过通过React Router寻找一些东西。我看到有这样一个东西 : createMemoryHistory([options]) createMemoryHistory创建一个不与浏览器URL交互的内存历史对象。当您需要自定义用于服务器端呈现,自动测试的历史记录对象或不想操纵浏览器URL(例如,将应用程序嵌入到i