javascript - 在 React Router 中按名称调用组件

标签 javascript reactjs react-router

我正在使用最新版本的 React Router 4.1.2 和动态路由。

这对我有用:

routes.push(<Route key={tab.id} exact path="/" component={Dashboard}/>)

但这不起作用:

routes.push(<Route key={tab.id} exact path="/" component={tab.component}/>)

显然是因为{tab.component}是一个字符串(值为 Dashboard ),其中 {Dashboard}是一个函数。

我怎样才能让它发挥作用?如何将字符串转换为与字符串同名的 React 组件?

最佳答案

一种简单的方法是将组件放置在 map 中,以便您可以按名称查找它们。当您想通过字符串检索某些内容时,这是一种非常常见的模式。

const componentByName = {
  Dashboard: <Dashboard />
};

routes.push(<Route 
  key={tab.id} 
  exact path="/" 
  component={componentByName[tab.component]}/>
);

关于javascript - 在 React Router 中按名称调用组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45620696/

相关文章:

javascript - Facebook Like 按钮并在链接 URL 中获取用户 UID

javascript - Node postgres 并获取具有重复名称的连接字段

javascript - 当屏幕尺寸为 800px 时,我想将左侧导航栏菜单 <div> 移至顶部

javascript - 从 Javascript 正确导航到 React 路由

javascript - React 路由器和身份验证

javascript - VueJs 指令双向绑定(bind)

javascript - React + D3 强制布局 : new Links have undefined positions

javascript - SlateJS:slate-core 编辑器不更新模拟 onKeyDown 事件的值

javascript - React 组件接收 props 为未定义

javascript - 为什么 React Router v6 不渲染我的组件?