Reactjs 生成现有组件的标记不需要';我不能在办公室工作

Reactjs 生成现有组件的标记不需要';我不能在办公室工作,reactjs,dynamically-generated,Reactjs,Dynamically Generated,更新 子项的数量来自父项,所以我不能只加载它,因为我有很多组件,我不想全部导入它们 原帖子中的代码已更改 原创帖子 我有很多组件。我希望在父组件中动态生成一些子组件的标记。我寻找这个,发现这个应该有用。但由于某种原因,它没有 代码笔: 类Child1扩展了React.Component{ render(){ 返回( 我是孩子 ) } }; 类Child2扩展了React.Component{ render(){ 返回( 我是孩子 ) } }; 类Child3扩展了React.Component{

更新

子项的数量来自父项,所以我不能只加载它,因为我有很多组件,我不想全部导入它们

原帖子中的代码已更改

原创帖子

我有很多组件。我希望在父组件中动态生成一些子组件的标记。我寻找这个,发现这个应该有用。但由于某种原因,它没有

代码笔:

类Child1扩展了React.Component{ render(){ 返回( 我是孩子 ) } }; 类Child2扩展了React.Component{ render(){ 返回( 我是孩子 ) } }; 类Child3扩展了React.Component{ render(){ 返回( 我是孩子 ) } }; 类父类扩展了React.Component{ render(){ var LinkedTag=“Child”+必须引用的this.props.childId; 返回( 我是父母 ) } }; 类Main扩展了React.Component{ render(){ 返回( ) } }; render(,document.body);
甚至可以这样做吗?

只需删除您的引号

var LinkedTag = Child3;
Child3是一个对象,而不是字符串


您可以根据以下条件显示子组件:

class Parent extends React.Component{
  render() {
    let component = <Child3/> // Here you can add the code for condition.
    return (
      <div>
        <div>i'm the parent</div>
        {component}
      </div>
    )
  }
};
类父级扩展React.Component{
render(){
let component=//这里可以添加条件的代码。
返回(
我是父母
{component}
)
}
};

您需要动态拾取要渲染的组件。。。 您只需要从一个主体对象中进行拾取

例如TagRenderers.js:

import Child1 from './child1'
import Child2 from './child2'

export default {
  Child1,
  Child2
}
。。。后来

import TagRenderers from '../TagRenderers'

...
render(){
  const TagRenderer = TagRenderers[`Child${this.state.number}`]
  return <div>
    <TagRenderer />
  </div>
}
从“../tagrenders”导入标记渲染器
...
render(){
const TagRenderer=TagRenderers[`Child${this.state.number}`]
返回
}


它基本上是从一个对象中选取一个属性-如果您需要及时获取该组件,则会有所不同-这假设除了@Dimitar Christoff之外,它们都在内存中可用

,如果您使用的是网页包代码拆分,则可以动态导入这些组件,这样就不必出于性能原因将它们全部包含在包中

例如:

//childComponent是要导入的组件的名称
const Render=require(`./${childComponent}.jsx`);
返回(
//我们添加“.default”,因为它是使用(require)函数导入的。

);我更新了代码以更好地解释我的代码,很抱歉解释不清您是否考虑过将子组件传递给父组件,并让父组件将其呈现为{this.props.children}?然后,您可以动态地要求模块作为var ChildComponent=require('Child'+n);我更新了代码,以便更好地解释我的代码,很抱歉,我所需要的解释模糊不清。忘记了动态地从JSON结构中获取内容的括号技巧!
import TagRenderers from '../TagRenderers'

...
render(){
  const TagRenderer = TagRenderers[`Child${this.state.number}`]
  return <div>
    <TagRenderer />
  </div>
}