Это может быть полный вопрос о нобе, но мне трудно понять это. У меня есть компонент React и внутри его метода render, я хочу визуализировать некоторые динамически передаваемые в компонентах (через реквизиты).Рендеринг нескольких реактивных компонентов с .map
Вот мое возвращение из метода визуализации (ES6, transpiled с Вавилонской)
return (
<div className={openState}>
/* Shortened for brevity*/
{this.props.facets.map(function(f) {
var CompName = facetMap[f.type]
return <CompName key={f.id} />
})}
/* Shortened for brevity*/
</div>
)
facetMap
это просто карта, чтобы совпасть строку «типа» прошло. Я не могу показаться, чтобы получить компоненты для рендеринга на странице.
У меня был результат метода .map(), сохраненный в var, а затем зарегистрировался на консоли и показал массив компонентов. Однако {facetComponents}
в методе визуализации имел те же результаты.
EDIT, для тех, кто заинтересован в решении
Потому что я действительно не мог найти ответ везде, вот мое решение завершено, благодаря @Mathletics
//Components imported using ES6 modules
import OCFacetText from "./oc-facet-text"
// Etc...
//Later on, in my render method:
let facetMap = {
"text": OCFacetText,
"number": OCFacetNumber,
"numberrange": OCFacetNumberRange,
"boolean": OCFacetBoolean,
"checkbox": OCFacetCheckbox,
// Etc, etc...
}
let facetComps = facets.map(function(f) {
var CompName = facetMap[f.type]
return <CompName key={f.id} />
})
//Finally, to render the components:
return (
<div className={openState}>
/* Shortened for brevity*/
{facetComps}
/* Shortened for brevity*/
</div>
)
Если вы просто визуализируете компонент ONE, это работает? – Mathletics
Просто визуализируйте компонент на странице? Да, это работает. В основном, используемый вариант позволяет использовать эти компоненты и динамически указывать. –
Является ли 'facetMap' набором строк или набором классов Component? [Динамические имена компонентов] (http://stackoverflow.com/questions/29875869) были хорошо освещены на SO. – Mathletics