Сохранение стиля флексбокса при использовании компонентов более высокого порядка, таких как реакция-раскрытие

Я использую flexbox с styled-components для компоновки и размера элементов в моем приложении. Я хочу добавить анимацию раскрытия и использую модуль react-reveal. По документации предполагается, что со стилями-компонентами «из коробки» будет работать.

Проблема в том, что HOC оборачивает дополнительный div вокруг внутреннего компонента, который нарушает отношения «родитель-> потомок» flexbox.

Вот как я добавляю анимацию.

const Card = styled.div`
   /* style */
   min-height: 400px;
   min-width: 100px;
   max-width: 400px;
   background-color: white;

   /* flex */
   display: flex;
   flex-basis: 25%;
   flex-direction: column;
   justify-content: flex-start;
   align-items: center;
`;

/* apply fade in animation */
const Card = withReveal(card, <Fade bottom />)

Этот div является одним из трех div внутри содержащего div, который выглядит как

const InnerContainer = styled.div`
   width: 80%;
   max-width: 1200px;
   padding: 100px;

   display: flex;
   flex-direction: row;
   justify-content: space-evenly;
   align-items: center;
`

Без применения анимации этот макет работает правильно, но когда я использую HOC withReveal, он оборачивает другой div вокруг компонента карты, что нарушает гибкий макет.

Я пробовал использовать другие модули анимации, но этот метод использования компонента HOC используется почти во всех модулях анимации или стиля reactjs.

Я попытался обернуть компонент HOC в styled() и добавить display: contents, чтобы попытаться передать CSS детям, но это, похоже, еще больше испортило макет.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
0
566
1

Ответы 1

Вы можете писать свои собственные вложенные стили с styled-components

Попробуй это

const InnerContainer = styled.div`
  width: 80%;
  max-width: 1200px;
  padding: 100px;

  > div {
    display: flex;
    flex-direction: row;
    justify-content: space-evenly;
    align-items: center;
  }
`

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