Javascript 使用.map呈现多个React组件
这可能是一个完整的noob问题,但我很难弄清楚这一点。我有一个React组件,在它的render方法中,我想渲染一些动态传入的组件(通过props) 这是我从render方法(ES6,用Babel传输)返回的结果 讨厌的一个 如果需要动态组件名称,则必须使用Javascript 使用.map呈现多个React组件,javascript,reactjs,Javascript,Reactjs,这可能是一个完整的noob问题,但我很难弄清楚这一点。我有一个React组件,在它的render方法中,我想渲染一些动态传入的组件(通过props) 这是我从render方法(ES6,用Babel传输)返回的结果 讨厌的一个 如果需要动态组件名称,则必须使用React.createElement(CompName),其中CompName是字符串或类对象 默认情况下,react将在上述示例中查找名为CompName的组件 因此,您的渲染函数如下所示: return ( <div cl
React.createElement(CompName)
,其中CompName是字符串或类对象
默认情况下,react将在上述示例中查找名为CompName
的组件
因此,您的渲染函数如下所示:
return (
<div className={openState}>
/* Shortened for brevity*/
{this.props.facets.map(function(f) {
var CompName = facetMap[f.type]
return React.createElement(CompName, {key: f.id}) />
})}
/* Shortened for brevity*/
</div>
)
返回(
/*为简洁而缩短*/
{this.props.facets.map(函数(f)){
var CompName=facetMap[f.type]
返回React.createElement(CompName,{key:f.id})/>
})}
/*为简洁而缩短*/
)
讨厌的一个
如果需要动态组件名称,则必须使用React.createElement(CompName)
,其中CompName是字符串或类对象
默认情况下,react将在上述示例中查找名为CompName
的组件
因此,您的渲染函数如下所示:
return (
<div className={openState}>
/* Shortened for brevity*/
{this.props.facets.map(function(f) {
var CompName = facetMap[f.type]
return React.createElement(CompName, {key: f.id}) />
})}
/* Shortened for brevity*/
</div>
)
返回(
/*为简洁而缩短*/
{this.props.facets.map(函数(f)){
var CompName=facetMap[f.type]
返回React.createElement(CompName,{key:f.id})/>
})}
/*为简洁而缩短*/
)
据我所知,您的facetMap
听起来像是字符串的集合:
var facetMap = {text: 'OCFacetText'}
但它实际上应该返回组件类:
var OCFacetText = React.createClass({...});
var facetMap = {text: OCFacetText};
然后(并且只有在那时),您将需要使用createElement
方法动态构造组件:
var CompName = facetMap[f.type]; // must be a FUNCTION not a string
return React.createElement(CompName, {key: f.id}) />
据我所知,您的
facetMap
听起来像是字符串的集合:
var facetMap = {text: 'OCFacetText'}
但它实际上应该返回组件类:
var OCFacetText = React.createClass({...});
var facetMap = {text: OCFacetText};
然后(并且只有在那时),您将需要使用createElement
方法动态构造组件:
var CompName = facetMap[f.type]; // must be a FUNCTION not a string
return React.createElement(CompName, {key: f.id}) />
如果只渲染一个组件,它是否工作?只渲染页面上的组件?是的,行得通。基本上,用例允许重用和动态指定这些组件。
facetMap
是一组字符串还是一组组件类?已经被很好地覆盖了,只有线。事实上,我在昨天的搜索中遇到了这个问题。我希望我的开发人员能够传入“text”而不是“OCFacetText”。如果只渲染一个组件,则可能会出现重复。是否可以工作?只渲染页面上的组件?是的,行得通。基本上,用例允许重用和动态指定这些组件。facetMap
是一组字符串还是一组组件类?已经被很好地覆盖了,只有线。事实上,我在昨天的搜索中遇到了这个问题。我希望我的开发人员能够传入“text”而不是“OCFacetText”。的可能副本不起作用。已经试过了React.createElement(CompName,{key:f.id})
在功能上与
相同CompName
是字符串吗?我的解决方案假定它是。是的,它是一个字符串。在我看来这是正确的。CompName
引用的类是否已定义并在范围内?还可以根据docs:not work将组件类作为第一个参数传递。已经试过了React.createElement(CompName,{key:f.id})
在功能上与
相同CompName
是字符串吗?我的解决方案假定它是。是的,它是一个字符串。在我看来这是正确的。CompName
引用的类是否已定义并在范围内?还可以根据文档将组件类作为第一个参数传递:仅供参考,这正是我链接到您的问题中所涉及的解决方案,我确实看到了该答案,但对此上下文没有太大帮助,虽然我能看到两者是如何重叠的。这两个重叠是因为它们是一样的。这完全是同一个问题。仅供参考,这正是我联系你的问题中所涉及的解决方案,我确实看到了答案,但这对本文没有太大帮助,尽管我可以看到两者是如何重叠的。这两个重叠是因为它们是相同的。这完全是同一个问题。