React: Отрисовка нескольких компонентов без элемента оболочки

Созданный на 15 мар. 2015  ·  3Комментарии  ·  Источник: facebook/react

Я не нашел повторяющейся проблемы, только этот пост https://groups.google.com/forum/#!searchin/reactjs/render $ 20multiple / reactjs / pHNJe8trFOg / J-zd4jxAkJ4J

У меня есть допустимый вариант использования, и я хочу им поделиться.

Я создаю основу для повествования, основанную на реакции. Каждый отдельный элемент позиционируется фиксированным, поскольку я написал собственный механизм компоновки и мне нужен полный контроль над всем. Моя структура начального уровня выглядит примерно так

<Story>
    <Grid />
    <UI />
</Story>

<Grid> отображает все фактические элементы ( <GridItem> ) истории (текст, изображения, видео и т. Д.). <UI /> отображает элементы пользовательского интерфейса, общие для каждой истории. Например, <VolumeControl> для управления громкостью аудио / видео элементов.

Если бы я визуализировал структуру, как указано выше, это был бы результат

<div>
    <div>
        <!--list of GridItems-->
    </div>
    <div>
        <!--list of UI components-->
    </div>
</div>

Поскольку все расположено неподвижно, это не работает. Слой пользовательского интерфейса покрывает все, что делает его непригодным для использования (например, нельзя нажимать на видео). Вот почему в настоящее время я вынужден делать следующее в методе render из Story

<div>
    <Grid />
    <VolumeControl />
    <Navigation />
    <ShareButtons />
</div>

Это работает, но некрасиво, поскольку я теряю разделение. Я не хочу, чтобы компонент Story знал обо всех компонентах пользовательского интерфейса. Sth. как виртуальный компонент <Fragment> который отображает его дочерние элементы без элемента-оболочки, решит проблему, поскольку я мог бы вернуть его из компонента <UI> .

Я знаю, что это редкий случай использования, я довольно талантлив в достижении крайних случаев для каждой структуры, которую я касаюсь.

Забавно, что запись этих вещей иногда волшебным образом заставляет ваш мозг делать полезные вещи. Я нашел другой обходной путь. Я использую visiblity:none на уровне пользовательского интерфейса и visibility:visible в компонентах пользовательского интерфейса. Но это взлом, не более того.

Все 3 Комментарий

Я считаю, что это дубликат № 2127.

Я считаю, что это дубликат № 2127.

Абсолютно. Я знал, что должен быть такой, но не смог его найти (нашел несколько недель назад). Закрываю это, и я явно свяжу его с другой проблемой, чтобы указать на мой вариант использования.

@Prinzhorn Только что наткнулся на это, и даже то, что вам, вероятно, больше не нужно обходное решение, я думаю, что знаю еще один: установка height в div s на 0 и добавление overflow:visible им по-прежнему должно показывать содержимое, но не закрывающий div .
Изменить : вероятно, этого достаточно для UI-div.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги