Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用.map呈现多个React组件_Javascript_Reactjs - Fatal编程技术网

Javascript 使用.map呈现多个React组件

Javascript 使用.map呈现多个React组件,javascript,reactjs,Javascript,Reactjs,这可能是一个完整的noob问题,但我很难弄清楚这一点。我有一个React组件,在它的render方法中,我想渲染一些动态传入的组件(通过props) 这是我从render方法(ES6,用Babel传输)返回的结果 讨厌的一个 如果需要动态组件名称,则必须使用React.createElement(CompName),其中CompName是字符串或类对象 默认情况下,react将在上述示例中查找名为CompName的组件 因此,您的渲染函数如下所示: return ( <div cl

这可能是一个完整的noob问题,但我很难弄清楚这一点。我有一个React组件,在它的render方法中,我想渲染一些动态传入的组件(通过props)

这是我从render方法(ES6,用Babel传输)返回的结果

讨厌的一个

如果需要动态组件名称,则必须使用
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
引用的类是否已定义并在范围内?还可以根据文档将组件类作为第一个参数传递:仅供参考,这正是我链接到您的问题中所涉及的解决方案,我确实看到了该答案,但对此上下文没有太大帮助,虽然我能看到两者是如何重叠的。这两个重叠是因为它们是一样的。这完全是同一个问题。仅供参考,这正是我联系你的问题中所涉及的解决方案,我确实看到了答案,但这对本文没有太大帮助,尽管我可以看到两者是如何重叠的。这两个重叠是因为它们是相同的。这完全是同一个问题。