Раскрывающееся меню не получает правильный стиль

В моей функции рендеринга React есть следующий код:

<div ref = "btnGroup" className = "dropdown">
   <button class = "dropdown-toggle" data-toggle = "toggle" onClick = {this.toggleDropdown}></button>
   <ul class = "scrollable-menu-parent dropdown-menu">
      <div>
         <form class = "droplist-panel">
            <input class = "droplist-search" />
            <div class = "scrollable-menu">
               <li class = "dropdown-item"> </li>
               ...
               ...
            </div>
         </form>
      </div>
   </ul>
</div>

В раскрывающейся функции переключения я добавляю открытый класс в самый верхний div.

Однако <ul> не получает стиль автоматического раскрывающегося списка, когда он открыт, ширина намного больше, а расположение также неверное.

Я что-то делаю не так с раскрывающимся списком, раскрывающимся списком и раскрывающимся меню, из-за чего <ul> не получает правильные классы?

Редактировать:

    toggleDropdown() {
        const $el = $(this.refs.btnGroup);
        if ($el.is('.open')) {
            this.closeDropdown($el);
        }
        else {
            this.openDropdown($el);
        }
    },

    closeDropdown(ele) {
        ele.removeClass('open');
        this.clearState();
    },

    openDropdown(ele) {
        ele.addClass('open');
        if (this.props.onOpen) {
            this.props.onOpen.bind(this)();
        }
    },

Покажите нам свою функцию toggleDropdown! Возможный дубликат stackoverflow.com/questions/30135351/…

StefanBob 23.03.2018 21:16

@StefanBob Добавил код

user2133404 23.03.2018 21:20

Похоже, вы используете jQuery вместе с React - вам следует избегать этого. Если вы используете императивный код (jQuery) внутри декларативного (React), он станет беспорядочным и трудным для понимания.

Al.G. 23.03.2018 23:09
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
0
3
39
0

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