【发布时间】:2017-03-03 17:20:43
【问题描述】:
我有一个反应组件的引用数组。如何渲染它们?
myArray = [Component1, Component2, Component3];
我正在寻找渲染函数,当给定数组时,它会渲染这个:
<div>
<Component1 />
<Component2 />
<Component3 />
</div>
【问题讨论】:
标签: reactjs
我有一个反应组件的引用数组。如何渲染它们?
myArray = [Component1, Component2, Component3];
我正在寻找渲染函数,当给定数组时,它会渲染这个:
<div>
<Component1 />
<Component2 />
<Component3 />
</div>
【问题讨论】:
标签: reactjs
您可以遍历数组的每个元素,其中每个元素都是组件并将其呈现为 JSX 元素。
像这样,例如如果myComponents 包含[MyComponent1, MyComponent2, MyComponent3] 那么
renderMyComponents(myComponents){
return myComponents.map((MyComponent, index) => {
return (
<li key={index}>
<MyComponent />
</li>
)
});
}
这是JSFiddle的链接。
【讨论】:
<MyComponent /> 所以决定不使用驼峰命名。
在 react 16 > 中,您可以像这样在渲染中返回一个组件数组:-
render(){
return this.state.myArray
}
【讨论】:
render() {
return (
<div>
<ul>
{myArray}
</ul>
</div>
);
}
【讨论】:
如果我正确理解了这个问题 - 尝试在 return 之前将组件设置为一些变量到 render 方法中,然后到 div 中,像对象一样调用这个变量:
render:
myArray = [Component1, Component2, Component3];
var myComp1 = myArray[0];
var myComp2 = myArray[1];
var myComp3 = myArray[2];
.....some code
return
....some code
<div>
{myComp1}
{myComp2}
{myComp3}
</div>
更新 React 16:(这样在 DOM 中没有多余的 DIV 包装器,所有元素都像同级一样)
render(): {
const myArray = [Component1, Component2, Component3];
.....some code
return
....some code
<>
myArray.map((component) => {
return({component})
})
</>
}
【讨论】: