Chr*_*ris 5 javascript jsx ecmascript-6 reactjs
不确定标题是否完全清楚(不知道如何措辞)所以让我解释一下。
我想尝试将组件名称列表存储在数组中,然后循环使用map(或合适的等效项)以将每个数组值显示为 JSX 组件。
所以类似的东西(感谢这段代码不起作用,只是想展示我希望实现的目标):
render(){
let links = ['DashboardLink', 'CoursesLink', 'AssignmentsLink'];
return (
<div>{
links.map((Link) => {
return <Link key={Link} />
}
}</div>
)
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,结果是:
<div>
<DashboardLink key='DashboardLink' />
<CoursesLink key='CoursesLink' />
<AssignmentLink key='AssignmentLink' />
</div>
Run Code Online (Sandbox Code Playgroud)
然后每个组件将在 div 中呈现。
我对 React 和 ES6 非常陌生,因此对于任何明显的错误,我深表歉意。
谢谢!
然后您可以使用辅助函数:
render(){
var links = ['DashboardLink', 'CoursesLink', 'AssignmentsLink'];
var findComponent: function (name){
switch (name){
case 'DashboardLink':
return (<DashboardLink />);
case 'CoursesLink':
return (<CoursesLink />);
case 'AssignmentsLink':
return (<AssignmentsLink />);
default:
return null; //You might want to return something else here//
}
};
return (
<div>
links.map((Link) => {
return findComponent(Link);
}
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
您也可以将此功能放在其他地方...
使用 React.createElement 方法创建自定义组件:第一个参数是标签名称,第二个是带有属性的对象,您可以添加子项作为第三个参数。
render(){
var links = ['DashboardLink', 'CoursesLink', 'AssignmentsLink'];
return (
<div>
links.map((Link) => {
return React.createElement(Link, {key: Link});
}
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
参考:https : //facebook.github.io/react/docs/glossary.html
| 归档时间: |
|
| 查看次数: |
3774 次 |
| 最近记录: |