我试图将前端设置为可根据客户需求动态调用组件的应用程序。所以我们有一个索引文件,其中导入了三个组件ComponentOne ComponentTwo ComponentThree
我这样导入import * as components from '../components'
然后,在我的render方法中,我有一个称为componentString的 Prop (从父组件传递过来),该 Prop 本质上用于检查该组件是否应存在于该用户版本的网站上。

例如,此组件字符串将为“ComponentOne”。我有一个包装器,用于检查特定组件是否在用户后端上,然后应调用并呈现该组件。

我的问题是如何使用此字符串本质上调用该组件。

我已经尝试过<components[componentString] /><components.componentString />{component[componentString]}之类的东西,最后尝试了{components.componentString]}。所有这些都不起作用,从本质上讲,我只希望结果等于<ComponentOne />,但是调用类似<componentString />的方法也不起作用。

最佳答案

摘自官方的react docs,我想你需要像下面这样写。基本上,您需要先将其添加为CapitalizedComponent,然后再尝试呈现它。

import React from 'react';
import { PhotoStory, VideoStory } from './stories';

const components = {
  photo: PhotoStory,
  video: VideoStory
};

function Story(props) {
  // Correct! JSX type can be a capitalized variable.
  const SpecificStory = components[props.storyType];
  return <SpecificStory story={props.story} />;
}

09-25 19:37