Я новичок в реакторе, поэтому, пожалуйста, помилуй.React Dynamic Component Naming
Я также прочитал все темы этого, React/JSX Dynamic Component Name и React/JSX dynamic component names в частности. Решения не работали.
Я использую интерфейс стиля табуляции, где пользователь выбирает вкладку и загружает соответствующие материалы. Родительский компонент сохраняет состояние содержимого вкладки, передает соответствующие реквизиты дочернему контенту. Затем этот ребенок загружает правильный компонент контента (как собственный ребенок).
var TabbedContent = React.createClass({
loadMenu: function() {
var menus=this.props.carDivState.vehicleDetailState;
for (key in menus) {
if (menus.hasOwnProperty(key)) {
if (menus[key]) {
var Component='TabbedContent'+key;
return <Component />;
}
}
}
},
render: function() {
return (
<div className="TabbedContent">
<div className="contentWrapper">
{this.loadMenu()}
</div>
</div>
)
}
});
loadMenu проходит через опоры, пока не найдет истинную опору. Затем он возвращает этот ключ (например, «Обзор») и создает переменную (например, Component = 'TabbledContentOverview').
Однако мой код возвращает HTML тег <tabbedcontentoverview></tabbedcontentoverview>
Вопрос
Как получить Реагировать вернуть компонент Реагировать вместо HTML тега? Кажется, я использую правильные капитализированные соглашения об именах. Я читал документы в Facebook. Я просто не понимаю.
Я хотел бы найти другой способ сделать это, ау как это похоже на рецепт катастрофы ... Почему бы не использовать реквизиты типа ' '? –
elclanrs
Насколько я понимаю ваше решение, вы должны передать ключ в качестве опоры, а затем сохранить все потенциальное содержимое с вкладками в одном компоненте? Я беспокоюсь, что по мере того, как разделы масштабируются, я останусь с одним гигантским и громоздким компонентом. Что мне не хватает или почему я ошибаюсь? Спасибо, что нашли время ответить! –
Это было мое предложение, но я думаю, это зависит от того, сколько альтернатив вам нужно. В любом случае вы можете создавать динамические компоненты, в конце концов, JSX является «просто JavaScript»; существует свойство 'displayName', которое можно использовать для динамического создания классов с помощью' React.createClass' – elclanrs