gpt4 book ai didi

reactjs - 嵌套路由不使用 React Router v4 渲染

转载 作者:行者123 更新时间:2023-12-04 03:10:34 25 4
gpt4 key购买 nike

我正在尝试将我的一些路由与 React Router v4 组合在一起以清理我的一些组件。现在,我只想将未登录的路由分组在一起,并将我的管理路由分组在一起,但以下内容不起作用。

main.js

const Main = () => {
return (
<main>
<Switch>
<Route exact path='/' component={Public} />
<Route path='/admin' component={Admin} />
</Switch>
</main>
);
};

export default Main;

公共(public).js
const Public = () => {
return (
<Switch>
<Route exact path='/' component={Greeting} />
<Route path='/signup' component={SignupPage} />
<Route path='/login' component={LoginPage} />
</Switch>
);
};

export default Public;

Greeting 组件显示在“localhost:3000/”,但 SignupPage 组件未显示在“localhost:3000/signup”,登录组件未显示在“localhost:3000/signup”。查看 React 开发工具,这两条路线返回 Null。

最佳答案

原因很明显。对于 main.js 中的路由,您已指定 Public 的路由路径具有精确 exact path='/' 的组件然后在公共(public)组件中匹配另一个 Routes .所以如果路由路径是/signup ,起初路径不准确,所以Public组件不会被渲染,因此不会有子路由。

将您的路由配置更改为以下内容

main.js

const Main = () => {
return (
<main>
<Switch>
<Route path='/' component={Public} />
<Route path='/admin' component={Admin} />
</Switch>
</main>
);
};

export default Main

public.js
const Public = () => {
return (
<Switch>
<Route exact path='/' component={Greeting} />
<Route path='/signup' component={SignupPage} />
<Route path='/login' component={LoginPage} />
</Switch>
);
};

此外,当您指定嵌套路由时,这些路由应该相对于父路由,例如,如果父路由是 /home然后在您希望写入的子 route /dashboard .它应该写成
<Route path="/home/dashboard" component={Dashboard}

甚至更好
<Route path={`${this.props.match.path}/dashboard`} component={Dashboard}

关于reactjs - 嵌套路由不使用 React Router v4 渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45626214/

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