当前位置: 首页 > 面试题库 >

如何在Erickras的Universal React Redux样板中的侧边栏中为生成的菜单项在route.js中实现动态路由

窦华晖
2023-03-14
问题内容

我目前正在从事基于CMS的项目。

我为此使用erikras的Universal React Redux样板

我真的需要有关处理动态路由的建议

让我们以一个简单的场景作为样板…

routes.js中

<Route path="about" component={About}/>
<Route path="login" component={Login}/>
<Route path="survey" component={Survey}/>
<Route path="widgets" component={Widgets}/>

data.js

export const data = [
  {id: 1, property: 'Dashboard', link: '/'},
  {id: 2, property: 'Login', link: '/login'},
  {id: 3, property: 'About Us', link: '/About'},
];

现在,假设根据用户角色,json数据中的属性将更改

假设新属性:是

{id: 4, property: 'test page', link: '/test'}

react将呈现组件时,它将如何知道路由链接..,因为未在route.js中定义

我没有正确的方法来实现它

根据用户角色,我们需要由特定菜单内容组成的边栏。

假设我们正在建立一个预订系统,可以有不同的用户角色,例如admin,维护模式,助手角色。

因此,不同的角色将具有不同的属性,因此,由于每个用户角色的属性肯定不同,因此我们需要在此基础上生成菜单。

谢谢!!


问题答案:

从您的示例中尚不清楚应为/testurl 呈现哪个组件?我想这是property钥匙的价值,对吧?

第一选择

您可以执行以下操作:

<Route path="/:page" component={Page}/>

它将允许您Page为每个url 渲染组件/,该组件起始于,并且该组件内部将包含页面url
this.props.routeParams.page。它使您可以在其中找到所需的组件Page#render

render() {
  const url = this.props.routeParams.page;
  const PageComponent = data.find(page => page.link === url).property;
  render <PageComponent />;
}

第二选择

您可以动态生成Routes,但是我不确定它是否有效(您可以检查一下)。您只需要替换此部分:

<Route path="about" component={About}/>
<Route path="login" component={Login}/>
<Route path="survey" component={Survey}/>
<Route path="widgets" component={Widgets}/>

 data.map(page => <Route path={page.link} component={page.property} key={page.id}/>)


 类似资料:
  • 我想实现菜单栏上的导航,这是我从API中获取的。例如,在主页上,我有四个菜单,如menu1、menu2、menu3、menu4,它们总是显示。点击这些菜单,我想获取与它们相关的产品。 我读过React js中的嵌套路由,但无法实现它。 类别的动态菜单栏: 我的路由文件: click on Category只会更改浏览器url,而不是页面。 CategoryProducts.ja Products.

  • 本文向大家介绍VC动态生成菜单项的实现方法,包括了VC动态生成菜单项的实现方法的使用技巧和注意事项,需要的朋友参考一下 本例所述为使用VC编写的一个可以动态生成菜单项的类文件,这里展示的是其核心代码,代码备有比较详细的注释,相对而言理解起来并不复杂。 主要功能代码如下:

  • 我需要一个简单的主div列100%满。 有时会出现一个侧边栏,具有动态宽度。 在这个示例中,您可以看到我无法更改侧栏宽度(每次都有一个新的宽度值),并且我无法将主div“拉伸”到100%的宽度。 怎么办?

  • 在我的应用程序中,我想在菜单栏中保留一个菜单栏和菜单,我想将注销按钮对齐到右侧,如下图所示。 我怎样才能做到这一点?

  • 问题内容: 我正在尝试从方法外部更改菜单项的标题。 我已经做了以下工作; 但是,我希望能够在此方法之外修改特定菜单项的标题。 问题答案: 正如JxDarkAngel所建议的那样,可以从你的中的任何地方调用它, 然后覆盖: