我目前正在使用React Router v4来嵌套路由。
最接近的示例是React-Router v4文档中的route配置 。
我想将我的应用分为2个不同的部分。
前端和管理区域。
我在想这样的事情:
<Match pattern="/" component={Frontpage}>
<Match pattern="/home" component={HomePage} />
<Match pattern="/about" component={AboutPage} />
</Match>
<Match pattern="/admin" component={Backend}>
<Match pattern="/home" component={Dashboard} />
<Match pattern="/users" component={UserPage} />
</Match>
<Miss component={NotFoundPage} />
前端的布局和样式与管理区域不同。因此,在首页中,回家的路线大约应该是子路线。
/ home 应该呈现在Frontpage组件中, / admin / home 应该呈现在Backend组件中。
我尝试了一些变体,但始终以不打/ home或/ admin / home结尾。
编辑-19.04.2017
因为这篇文章现在有很多观点,所以我用最终解决方案对其进行了更新。希望对您有所帮助。
编辑-08.05.2017
删除了旧的解决方案
最终解决方案:
这是我现在使用的最终解决方案。此示例还具有全局错误组件,例如传统的404页面。
import React, { Component } from 'react';
import { Switch, Route, Redirect, Link } from 'react-router-dom';
const Home = () => <div><h1>Home</h1></div>;
const User = () => <div><h1>User</h1></div>;
const Error = () => <div><h1>Error</h1></div>
const Frontend = props => {
console.log('Frontend');
return (
<div>
<h2>Frontend</h2>
<p><Link to="/">Root</Link></p>
<p><Link to="/user">User</Link></p>
<p><Link to="/admin">Backend</Link></p>
<p><Link to="/the-route-is-swiggity-swoute">Swiggity swooty</Link></p>
<Switch>
<Route exact path='/' component={Home}/>
<Route path='/user' component={User}/>
<Redirect to={{
state: { error: true }
}} />
</Switch>
<footer>Bottom</footer>
</div>
);
}
const Backend = props => {
console.log('Backend');
return (
<div>
<h2>Backend</h2>
<p><Link to="/admin">Root</Link></p>
<p><Link to="/admin/user">User</Link></p>
<p><Link to="/">Frontend</Link></p>
<p><Link to="/admin/the-route-is-swiggity-swoute">Swiggity swooty</Link></p>
<Switch>
<Route exact path='/admin' component={Home}/>
<Route path='/admin/user' component={User}/>
<Redirect to={{
state: { error: true }
}} />
</Switch>
<footer>Bottom</footer>
</div>
);
}
class GlobalErrorSwitch extends Component {
previousLocation = this.props.location
componentWillUpdate(nextProps) {
const { location } = this.props;
if (nextProps.history.action !== 'POP'
&& (!location.state || !location.state.error)) {
this.previousLocation = this.props.location
};
}
render() {
const { location } = this.props;
const isError = !!(
location.state &&
location.state.error &&
this.previousLocation !== location // not initial render
)
return (
<div>
{
isError
? <Route component={Error} />
: <Switch location={isError ? this.previousLocation : location}>
<Route path="/admin" component={Backend} />
<Route path="/" component={Frontend} />
</Switch>}
</div>
)
}
}
class App extends Component {
render() {
return <Route component={GlobalErrorSwitch} />
}
}
export default App;
在react-router-v4中,您不嵌套<Routes />
。相反,您将它们放在另一个中<Component />
。
例如
<Route path='/topics' component={Topics}>
<Route path='/topics/:topicId' component={Topic} />
</Route>
应该成为
<Route path='/topics' component={Topics} />
与
const Topics = ({ match }) => (
<div>
<h2>Topics</h2>
<Link to={`${match.url}/exampleTopicId`}>
Example topic
</Link>
<Route path={`${match.path}/:topicId`} component={Topic}/>
</div>
)
我在想这样的事情: 前台有一个不同的布局和风格与管理区域。所以在frontpage中的路由是home、about等等,其中一个应该是子路由。 /home应该呈现到Frontpage组件中,而/admin/home应该呈现在后端组件中。 最终解决方案: 这是我现在使用的最终解决方案。这个例子也像传统的404页面一样有一个全局错误组件。
我想在单个路由文件中实现嵌套路由和侧边栏路由的组合。我希望组件像这样渲染。 我的路线设置如下 在仪表板页面内,我基本上实现了react-router-dom网站的侧边栏示例。 它工作正常,但是我想把所有的路由放在一个文件中。 像这样的 上面的代码是虚构的代码,但它是为了给我一个想法,我试图实现。我试图从一个类似的问题解决,但它不适合我。 如何将所有路由放在一个文件中,并在react router
本文向大家介绍vue-router:嵌套路由的使用方法,包括了vue-router:嵌套路由的使用方法的使用技巧和注意事项,需要的朋友参考一下 模板抽离 我们已经学习过了Vue模板的另外定义形式,使用<template></template>。 然后js里定义路由组件的时候: 路由嵌套 实际应用界面,通常由多层嵌套的组件组合而成。 比如,我们 “首页”组件中,还嵌套着 “登录”和 “注册”组件,那
1. 前言 本小节我们介绍如何嵌套使用 VueRouter。嵌套路由在日常的开发中非常常见,如何定义和使用嵌套路由是本节的重点。同学们在学完本节课程之后需要自己多尝试配置路由。 2. 配置嵌套路由 实际项目中的应用界面,通常由多层嵌套的组件组合而成。同样地,URL 中各段动态路径也按某种结构对应嵌套的各层组件,例如: /article/vue /a
假设我希望RESTendpoint大致如下: 每个if上的CRUD都有意义。例如,/projects POST创建一个新项目,GET获取所有项目/projects/project_id GET仅获取该一个项目。 项目是特定于项目的,所以我将它们放在project_id下,这是一个特定的项目。 有没有办法创建这种嵌套路由? 现在我有这样的东西: 但是我正在寻找一种方法将项目路线嵌套到项目路线中,并能
本文向大家介绍Vue 嵌套路由使用总结(推荐),包括了Vue 嵌套路由使用总结(推荐)的使用技巧和注意事项,需要的朋友参考一下 开发环境 Win 10 node-v10.15.3-x64.msi 下载地址: https://nodejs.org/en/ 需求场景 如下图,我们希望点击导航栏不同菜单时,导航栏下方加载不同的组件,进而展示不同的页面内容 解决方案 使用动态路由 新建home.vue作