gpt4 book ai didi

javascript - React Nested Router仅更改url,但不渲染页面

转载 作者:行者123 更新时间:2023-12-03 01:43:17 26 4
gpt4 key购买 nike

我是新来的,写信询问有关 React 路由器的问题。我用谷歌搜索了两个多小时,但找不到可行的解决方案。

基本上,我正在编写一个可以显示文章列表的网站。主页上有一个名为“文章”的按钮。一旦我们点击它,路由器就会工作并转到页面“/articles”,如下面的代码所示。

文件A:

import React, { Component } from 'react';
import {BrowserRouter, Route, Link, Switch} from 'react-router-dom';

class A extends Component {
constructor(props) {
super(props);
}
render() {
return (
<BrowserRouter>
<div>
<div>
<button><Link to = "/articles"> Articles </Link></button>
</div>
<Switch>
<Route exact path = '/articles' render = {() => <B />}/>
</Switch>
</div>
</BrowserRouter>
);
}
}

文章列表将由组件B显示。我设计组件B有两种情况。首先,默认情况下,当我们点击组件A中的按钮时,URL是“/articles”,然后会显示一个文章列表。其次,如果我们单击任何文章标题,URL 将更改为“articles/articleID”,并且组件将显示该articleID 的详细信息。

文件B:

import React, {Component} from 'react';
import {BrowserRouter, Route, Link, Switch} from 'react-router-dom';

class B extends Component {
constructor(props) {
super(props);
}

render() {
return (
<BrowserRouter>
<div>
<Switch>
<Route exact path = "/articles" render = {(props) => <Articles {...props} />}/>
<Route path = "/articles/:articleId" render = {() => <ArticleDetail />}/>
</Switch>
</div>
</BrowserRouter>
);
}
}

现在我的问题是,当在文章详情页面时(当页面URL为“/articles/articleId”时),我可以点击组件A中的“文章”按钮,URL将更改为“/文章”,但页面不会渲染,也就是说,我仍然会在文章详情页面,而不是返回到文章列表页面。

如果我的描述让您感到困惑,请询问我!感谢您的帮助!

最佳答案

我认为你必须在主应用程序组件中使用开关组件,例如“A”,并在每个“路线”上使用“exact”关键字,请检查react-router v4以获取更多信息:https://reacttraining.com/react-router/web/api/Switch

关于javascript - React Nested Router仅更改url,但不渲染页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50750916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com