Реакция - Родительский макет зависит от содержания детей

У меня есть ситуация, когда класс родителей зависит от того, есть ли у детей содержание.

 <div className="parent">
    <div className="child1"></div>
    <div className="child2"></div>
    <div className="child3"></div>
 </div>

Например, если child1 - единственный дочерний элемент, имеющий содержимое, родительский класс должен быть "a", если child1 и child2 имеют содержимое, родительский класс должен быть "ab" и т. Д. Каждый дочерний элемент поддерживает свое собственное состояние, то есть дочерний элемент может начинаться с содержание и изменения состояния не имеют ни одного в конце. Я смотрю на использование компонентов и ссылок высшего порядка для решения этой проблемы, но пока не нашел хорошего решения. Хотите знать, если есть шаблон сборки, чтобы помочь с этой проблемой.

1 ответ

Мое понимание традиционного React предполагает, что если родительский компонент зависит от состояния дочерних компонентов, то эта переменная состояния должна действительно поддерживаться общим прародителем следующим образом:

<Grandparent> //Maintains State
    <Parent> // receives Grandparent state and state manipulation functions as props
        <Child 1> // receives Grandparent state and state manipulation functions as props (via Parent)
        <Child ...n> // same as child one.

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

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

Другие вопросы по тегам