React中来自配置文件的动态命名组件

问题描述 投票:0回答:1

看到了很多答案,由于某种原因,根本无法理解,或者在这种情况下不起作用。我目前已经构建了路由器,以基于要导入的配置文件动态构建路由。我遇到的问题是,我还希望路由渲染的组件来自配置文件,但无法使其正常工作。

export const configNavOptions = {
config:[
{
  group: "general",
  paths: [
    {name:"name 1", component:"Component 1"},
    {name:"name 2", component:"Component 2"},
    {name:"name 3", component:"Component 3"},
  ]
}
]
}

AND THEN WITHIN MY ROUTER I AM MAPPING THE CONFIG FILE AS SO

  <Switch>
      {configNavOptions.config.map(config => (
          config.paths.map(path => (
            <Route exact path={`${this.props.match.url}/${config.group}/${path.name}`}
            component={path.component}/>
          ))
        ))}
        </Switch>

如果我将{path.component}替换为实际的组件,它会完美运行,但我无法完成最后一步。

谢谢一堆!!

reactjs react-router jsx react-component
1个回答
0
投票

我解决了这个问题,我有这个:

 <Root>
    <PopNotification />
        <Suspense fallback={<Loader siteLoader />}>
          <Switch>
            {
              allRoutes()[this.props.userKind].map(singleRoute => {
                return <Route {...singleRoute} />;
              })
            }
          </Switch>
        </Suspense>
      </Root>

其中this.props.userkind是用户的种类,allRoutes函数如下所示:

    export function allRoutes(){


    return {

[userRoles.bufet_owner]: [
        ...publicRoutesArray,
        ...commonPrivateRoutes,
        {
            exact: true,
            path: '/plan',
            key: "PlanBody",
            component: <PlanBody />,
        },
        {
            exact: true,
            path: '/success-plan',
            key: "PlanSuccess",
            component:<PlanSuccess />,
        },
        {
            exact: true,
            path: [
                '/accounts/entry',
                '/accounts/egress',
                '/accounts/entry/:page',
                '/accounts/egress/:page',
            ],
            component: AccountsContainer,
            key: 'AccountsContainer'
        },
}

    }

我希望这可以帮助您解决问题

© www.soinside.com 2019 - 2024. All rights reserved.