Я совершенно новый, чтобы реагировать, и я не знаю, есть ли шаблон для сокращения дублированного кода. Я знаю компоненты более высокого порядка, но я не уверен, как они могут помочь мне. Вот вопрос, который я имею:Уменьшить дублированный код шаблона в React
Вот сценарий:
У меня есть три Реагировать компоненты в моем приложении: Студии, Проекты, Актеры
Каждый компонент соответствует маршруту на передней панели -End:
- /проекты:
Projects
- /студии:
Studios
- /актеры:
Actors
Каждый компонент делает почти то же самое, зацикливание по элементам и визуализации компонента:
Проекты: Переберите данных для проектов и визуализации
Project
компонент для каждого проектаStudios: Переберите данные для студий и визуализации
Studio
компонента для каждой студииАктеры: Переберите данных для актеров и вынести
Actor
компонент для каждого актера
Теперь модель для Project
, Studio
и Actor
в значительной степени то же самое с небольшим изменением:
Studio
: изображение, название, деталиActor
: изображения, имя и биоProject
: изображение, название, и descri ption
Кроме того, в представлении «Список», когда я нажимаю на элемент, он принимает меня к деталям этого элемента. Например, когда я нахожусь на изображении /projects
, когда я нажимаю на элемент проекта, он принимает меня до /projects/:id
и отображает компонент ProjectDetail
. Таким образом, к настоящему моменту для каждого объекта у меня есть три компонента: ItemList
, Item
, ItemDetail
. Которая составляет 3 x 3 = 9 компонентов. Я чувствую, что есть лучший способ сделать это. Может быть, я не понимаю ответственности маршрутизатора?Прямо сейчас, у меня есть маршрут для ItemList
и ItemDetail
для каждого объекта:
- /проекты:
Projects
- /Проекты /: ID:
ProjectDetail
- /актеры:
Actors
- /actors/id:
ActorDetail
- /студия:
Studios
- /студии /: ID:
StudioDetail
В конце концов, я хотел бы обобщить модели, которые очень похожи друг на друга, чтобы уменьшить шаблонный код. Возможно:
ItemList
:data
бы в качестве входных данных и визуализации соответствующегоItem
компонента.Item
: Компонент, который будет отображаться наItemList
ItemDetail
: Компоненте, который показывает детальItem
и общий клиент правило маршрута, который может автоматически сопоставить маршрут к соответствующей компоненте ,
Не могли бы вы предоставить немного более подробную информацию? Похоже, вы описываете самый базовый сценарий React для компонентов и компонентов для детей, но это трудно сказать. FWIW, 'props.children' ничего больше, чем детей, передаваемых в качестве компонента:' TEST MyComponent> 'так же, как' Test} /> ' –
ZekeDroid
Намного лучше! Хорошо, что вы попробовали? Существует техника, о которой я хотел бы написать где-нибудь, которая могла бы помочь в вашем случае, но я хочу убедиться, что это то, что вам нужно, прежде чем предлагать это в качестве ответа. Короче говоря, вы могли бы предоставить всю информацию, необходимую для общего компонента, используя один файл json в качестве конфигурации? Думайте, что вы можете передать все, что json сериализуется, как названия, имя компонента, ссылки и т. Д. – ZekeDroid
@ZekeDroid нет. Я не пробовал это. Я также смотрю на Router5, там есть интересные концепции, но я не уверен, поможет ли это мне обобщить мои ресурсы/компоненты/маршруты. –