Пониженная передача


Пониженная передача - принцип действия

Пониженная передача – это понятие, применимое по отношению к тракторам и небольшим грузовикам.

Оглавление

  1. Для чего нужна пониженная передача
  2. Как физически реализуется пониженная передач
  3. Увеличиваем крутящий момент
  4. Особенности использования пониженной передачи
  5. Видео "Пониженная передача"

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

Для чего нужна пониженная передача

Благодаря понижающей коробке передач транспортное средство обретает внедорожные качества – улучшается его проходимость, появляется способность преодолевать препятствия, которые для машин, не оснащенных такой функцией, станут непреодолимым барьером.

Важно

Включенная пониженная передача дает колесам возможность совершать меньшее число оборотов при находящейся на прежнем уровне мощности двигателя. 

Описанная возможность появляется благодаря тому, что в трансмиссиях тракторов, небольших грузовых автомобилей и некоторых видов спецтехники используется «раздатка» - раздаточная коробка, где происходит распределение крутящего момента между осями ведущих мостов.

Двигатель любого транспортного средства демонстрирует максимальную мощность, достигнув нужного количества оборотов в минуту. По достижению конкретного числа оборотов достигается и максимальный крутящий момент, передаваемый на ведущие колеса. 

В подавляющем большинстве случаев, а если речь идет о легковых автомобилях, то всегда, КПП сконструированы таким образом, чтобы при разной скорости движения силовая установка равномерно обеспечивала максимальную мощность и крутящий момент. 1-я скорость (передача) предназначена для приведения транспортного средства в движение, здесь важен максимальный крутящий момент, а вот на 5 передаче машина способна ехать быстро на оборотах максимальной мощности.  

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

В подобных случаях, когда нужны максимальные обороты двигателя на небольшой скорости движения при нечастом вращении колес, вступает в действие пониженная коробка передач. Она снижает частоту вращения колес и при этом не тормозит двигатель, позволяя ему раскручиваться до максимальных показателей. 

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

Как физически реализуется пониженная передача

Пониженной передачей могут оснащать как механические, так и автоматические КП, однако, повторимся: наилучшим решением для повышения проходимости является именно наличие отдельной раздатки, которую устанавливают только на небольшие грузовики, трактора и прочую подобную технику. Если же дополнительного рычага в машине нет, пониженная передача включается нажатием специальной кнопки.

На разной технике пониженная передача характеризуется разным передаточным числом, и чем оно выше, тем выше проходимость авто, тем больше у него будет шансов выбраться из заноса или пробуксовки, будучи при этом загруженным «под завязку». 

Увеличиваем крутящий момент

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

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

При частой езде по бездорожью, во время движения на крутой подъем или спуск, а еще если в кузове находится тяжелый груз, классического количества передач может оказаться недостаточно. Вот и возникает необходимость в получении промежуточного передаточного числа. 

Объясним на примере. Машина движется на 4 скорости, она идет на подъем, мотор перегружен. Если переключится на 3 передачу, двигатель будет «перекручен», поэтому дополнительная коробка в такой ситуации придется как нельзя кстати.

Особенности использования пониженной передачи

Все преимущества от применения понижающей передачи можно оценить лишь при условии правильного ее использования. Если не уметь пользоваться столь удобным техническим решением и действовать неверно, высок риск преждевременного выхода КП из строя. 

Переключение пониженной передачи выполняется следующим образом:

  •  Останавливаем авто.
  •  Рычаг на основной коробке передач переводим в нейтраль.
  •  Рычаг дополнительной коробки перемещаем на пониженную передачу.
  •  Выжимаем сцепление.

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

Он позволяет включить пониженную передачу, но прежде так же, как было описано выше, нужно перевести основной рычаг в нейтральное положение. В противном случае из строя выйдет и коробка передач, и мотор. 

Чтобы автомобиль, оснащенный раздаточной коробкой, верой и правдой служил как можно дольше, необходимо соблюдать ряд простых требований:

  •  Включать пониженную передачу нужно лишь тогда, когда транспортное средство стоит на месте. 
  •  Нельзя ездить на пониженной передаче по ровной и твердой дороге – это чревато высокими нагрузками, которым подвергается трансмиссия вместе с мотором. Как результат – они быстрее изнашиваются, чаще возникают мелкие поломки и в конечном счете появляется необходимость дорогостоящего ремонта, что влечет за собой серьезные финансовые потери.
  •  Для получения максимального эффекта от понижающей передачи трогаться с места нужно на больших оборотах, раскрутив силовую установку до максимального крутящего момента.  

 Важно уметь правильно пользоваться педалью сцепления, не нажимать на нее без надобности, не «втапливать» педаль газа в пол, держа при этом мотор на максимальной мощности при интенсивной работе педалью сцепления. 

Заключение

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

Пониженная передача

Зачем нужна пониженная передача

Понижающая передача – один из признаков настоящего внедорожника. Но большинство владельцев использует ее крайне редко, или не использует вовсе. А зачем? Движки сейчас мощные, тапку в пол, и поехали!

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

Рыхлый песок, снег, и густая грязь
По таким покрытиям нужно двигаться без лишних резких движений, но одновременно с этим, они сильно сопротивляются движению, что заставляет водителя сильнее давить на газ. Дальше результата два: либо электроника, заметив пробуксовку, начнет душить двигатель, либо колеса потеряют сцепление с дорогой и начнут буксовать, закапывая машину с каждым оборотом. Откопаться будет очень непросто. Понижайка в таких случаях позволит двигаться с передачей большого крутящего момента на колеса без высоких оборотов этих самых колёс, таким образом, не давая машине зарыться вглубь и встать окончательно.

Мокрый луг, наст, болотистая почва
Все эти виды поверхности объединяет то, что двигаться по ним уверенно можно только не разорвав верхний связывающий слой: траву или корку льда. Малейшая ошибка при работе газом приводит к мгновенному проваливанию колёс сквозь относительно прочный верхний слой к жидкой грязи или сыпучему снегу, обладающим практически нулевым сцеплением. Включив понижайку (и спустив шины для снижения давления на грунт) вы сможете уверенно двигаться по подобным покрытиям до пределов их несущей способности. Но лучше, конечно, подобные места объезжать стороной, иначе поход за трактором может оказаться единственной целью дня.

Камни и крутые подъёмы. Буксировка груза на бездорожье.
Общее у всех этих видов движения – высокая нагрузка на все узлы трансмиссии. И как минимум, после раздаточной коробки, есть все шансы их снизить в 2-3 раза, включив пониженный ряд, продлив тем самым ресурс двигателя и КПП.

К тому же, проскальзывание колёс на подъеме может привести к неуправляемому скатыванию автомобиля вниз с возможным опрокидыванием. Понижайка в таком случае может спасти не только двигатель и КПП, но и вас с машиной в целом.

В качестве вывода: пониженный ряд трансмиссии способен существенно увеличить проходимость авто и сэкономить его ресурс, но в то же время необходимо понимать, что оттуда, куда вы забрались на понижайке, блокировках, и на спущенных шинах, достать вас сможет только трактор или лебедка. Не стоит соваться в тяжелое бездорожье без острой необходимости. Большинство виденных мной ситуаций, финалом которых была серьёзно поврежденная машина, происходили исключительно на покатушках "ради удовольствия" или в угаре "смотри, как я могу!".

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

Когда движку не хватает мощности для преодоления препятствия – в помощь пониженная скорость АКПП

Коробка передач с пониженной передачей увеличивает на колесах крутящий момент. Передаточное число вторичного вала увеличивается, что в свою очередь увеличивает число оборотов моста. Это свойство коробки особенно полезно при преодолении небольших водных преград, движении в условиях гололеда или мокрой дороги, особенно на спусках и подъемах. А также при движении по «сильному» бездорожью, когда в обычном режиме не хватает мощности.

Как включается режим пониженной передачи

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

Когда рычаг селектора расположен напротив «D3», это означает, что коробка не будет переключаться выше третьей передачи. То есть, включен режим пониженной передачи. Наиболее эффективный вариант езды с частым и продолжительным торможением. И по аналогии: D2 (или режим S) – активны лишь первая и вторая передачи, экстренный вариант движения в сложных условиях, D1(или 1) – включается лишь первая скорость.

Некоторые типы автоматических коробок имеют обозначение режима пониженной передачи термином «Low», режим L. На отечественных авто – режим «ПП». Все это обозначает тихий ход, пониженную передачу. То есть ту манеру движения, которая необходима в сложных дорожных условиях.

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

Если Вы заметили ошибку, неточность или хотите дополнить материал, напишите об этом в комментариях, и мы исправим статью!

Понижающая передача | Понижающая передача

Введение​

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

Это компонент, который контролирует действия пользователя и его состояние, чтобы вы могли создать автозаполнение/поле со списком или выбрать компонентов. Он использует рендер prop, который дает вам максимальную гибкость с минимальным API потому что вы отвечаете за визуализацию всего, и вы просто применяете реквизит того, что вы визуализируете.

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

Реквизит, использованный в примерах​

В примерах ниже мы используем компонент Downshift и деструктурируем его из его результат реквизиты геттера и переменные состояния. Реквизит, возвращенный Понижающая передача используются следующим образом:

Возвращенный Prop Элемент Комментарии
GetLabelProps .
getToggleButtonProps Вызовите и деструктурируйте возвращаемый объект на кнопке-переключателе (если есть).
getRootProps
Вызовите и деструктурируйте возвращаемый объект на родительском элементе кнопки ввода и переключения.
getInputProps Вызовите и деструктурируйте возвращаемый объект в элементе ввода.
getMenuProps
Вызовите и деструктурируйте возвращаемый объект в элементе меню.
getItemProps
  • Вызовите с индекс или элемент и деструктурируйте возвращаемый объект в каждом элементе пункта меню.
    isOpen Значение состояния при открытом состоянии меню. Используется ниже для условного отображения элементов.
    selectedIndex Значение состояния с индексом выделенного пункта меню. Используется ниже для укладки.
    selectedItem Значение состояния с выбранным элементом. Используется ниже для укладки.
    inputValue Укажите значение с поисковым запросом. Используется ниже для фильтрации элементов.

    Полная документация по всем возвращенным реквизитам, компонентам реквизита и т. д. информацию ознакомьтесь со страницей Github.

    Важно​

    Если вы не знакомы с Понижение передачи тогда может стоит сначала проверить useCombobox, который должен обеспечивать ту же функциональность, но как крючок. Кроме того, если вам нужно только раскрывающееся меню select без ввода текста, то проверьте использование Select. Наконец, для поддержки множественного выбора вы можете проверьте хук useMultipleSelection.

    Что касается компонента Downshift, вы можете использовать его двумя способами, оба из них показано ниже.

    Существует (прямой способ, который позволяет обернуть весь _combobox HTML в Понижение передачи . Недостатком этого способа является то, что выпадающий список Структура HTML, предложенная ARIA, не реализована, и средства чтения с экрана не будут широко поддерживать его.

    Существует также не очень простой способ , который позволяет вам следовать combobox Структура HTML, и вы должны стремиться реализовать ее. Вот ты будет использовать getRootProps для элемента, который обертывает ваш ввод , а затем вы будете добавить ul в качестве родственного элемента обертки. См. примеры ниже.

    Элемент со списком может быть создан с элементами HTML, такими как: label , ul , li , кнопка , ввод и div или что-то подобное содержат ввод и кнопку переключения. Крайне важно соблюдать приведенную ниже структуру HTML, так как она позволит правильно работать всем программам чтения с экрана. с виджетом. Самое главное ввод должен содержаться combobox div и ul должны быть на одном уровне с полем со списком раздел .

    Использование с

    getRootProps

    Добиться правильной структуры HTML можно только при использовании getRootProps getter prop from Downshift . Вы применяете getRootProps на элемент-оболочка, содержащий ввод и, возможно, кнопку триггера.

    CodeSandbox для использования с getRootProps.

    функция ComboBox() { постоянные элементы = [ {автор: «Харпер Ли», название: «Убить пересмешника»}, {автор: 'Лев Толстой', название: 'Война и мир'}, {автор: 'Федор Достоевский', название: 'Идиот'}, {автор: «Оскар Уайльд», название: «Портрет Дориана Грея»}, {автор: "Джордж Оруэлл", название: "1984"}, {автор: «Джейн Остин», название: «Гордость и предубеждение»}, {автор: 'Марк Аврелий', название: 'Размышления'}, {автор: 'Федор Достоевский', название: 'Братья Карамазовы'}, {автор: 'Лев Толстой', название: 'Анна Каренина'}, {автор: 'Федор Достоевский', название: 'Преступление и наказание'}, ] возвращаться ( <Понижение onChange={выбор => тревога( выбор ? `Вы выбрали "${selection. title}" от ${selection.author}. Отличный выбор!` : 'Выбор снят', ) } itemToString={item => (item ? item.title : '')} > {({ получитьInputProps, получитьItemProps, получитьLabelProps, получитьMenuProps, получитьToggleButtonProps, открыто, входное значение, выделенный индекс, выбранный элемент, получитьRootProps, }) => ( <дел>

    <дел className="flex shadow-sm bg-white gap-0.5" {...getRootProps({}, {suppressRefError: true})} > <ввод placeholder="Лучшая книга" className="w-полный p-1.5" {...getInputProps()} /> <кнопка aria-label={'переключить меню'} className="px-2" тип = "кнопка" {. ..getToggleButtonProps()} > {открыто ? <>↑ : <>↓}
    <ул className="absolute w-72 bg-white mt-1 shadow-md max-h-80 overflow-scroll p-0" {...getMenuProps()} > {открыто ? Предметы .фильтр( пункт => !входное значение || item.title.toLowerCase().includes(inputValue) || item.author.toLowerCase().includes(inputValue), ) .map((элемент, индекс) => ( <ли className={сх( выделенный индекс === индекс && 'bg-blue-300', selectedItem === item && 'шрифт-полужирный', 'py-2 px-3 shadow-sm flex flex-col', )} {...getItemProps({ ключ: элемент. название, показатель, предмет, })} > {item.title} {элемент.автор} )) : ноль}
    )} ) }

    Загрузка...

    Использование без

    getRootProps

    Использование Downshift без getRootProps добавит роль combobox в список визуализируется дочерний элемент. Таким образом, ваш виджет должен иметь все элементы (меню, ввод, кнопка, метка) как дочерние элементы выпадающего списка , который не совместим со структурой HTML поля со списком ARIA. Это все еще будет работать, но это структура поддерживается не всеми программами чтения с экрана. Поскольку именно так используется рекламировалось в прошлом, мы все еще поддерживаем его, но мы настоятельно рекомендуем перейти либо в структуру с getRootProps или даже лучше использовать крючок useCombobox .

    CodeSandbox для использования без getRootProps.

    функция ComboBox() { постоянные элементы = [ {автор: «Харпер Ли», название: «Убить пересмешника»}, {автор: 'Лев Толстой', название: 'Война и мир'}, {автор: 'Федор Достоевский', название: 'Идиот'}, {автор: «Оскар Уайльд», название: «Портрет Дориана Грея»}, {автор: "Джордж Оруэлл", название: "1984"}, {автор: «Джейн Остин», название: «Гордость и предубеждение»}, {автор: 'Марк Аврелий', название: 'Размышления'}, {автор: 'Федор Достоевский', название: 'Братья Карамазовы'}, {автор: 'Лев Толстой', название: 'Анна Каренина'}, {автор: 'Федор Достоевский', название: 'Преступление и наказание'}, ] возвращаться ( <Понижение onChange={выбор => тревога( выбор ? `Вы выбрали "${selection. title}" от ${selection.author}. Отличный выбор!` : 'Выбор снят', ) } itemToString={item => (item ? item.title : '')} > {({ получитьInputProps, получитьItemProps, получитьMenuProps, получитьLabelProps, получитьToggleButtonProps, входное значение, выделенный индекс, выбранный элемент, открыто, }) => ( <дел>

    <ввод placeholder="Лучшая книга" className="w-полный p-1.5" {...getInputProps()} /> <кнопка aria-label={'переключить меню'} className="px-2" {...getToggleButtonProps()} > {открыто ? <>↑ : <>↓}
    <ул className="absolute w-72 bg-white mt-1 shadow-md max-h-80 overflow-scroll p-0" {. ..getMenuProps()} > {открыто ? Предметы .фильтр( пункт => !входное значение || item.title.toLowerCase().includes(inputValue) || item.author.toLowerCase().includes(inputValue), ) .map((элемент, индекс) => ( <ли className={сх( выделенный индекс === индекс && 'bg-blue-300', selectedItem === item && 'шрифт-полужирный', 'py-2 px-3 shadow-sm flex flex-col', )} ключ = {`${item.value}${индекс}`} {...getItemProps({ предмет, показатель, })} > {item.title} {элемент. автор} )) : ноль}
    )} ) }

    Идет загрузка...

    Другие примеры использования репозиторий.

    использование множественного выбора | Понижение передачи

    Проблема​

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

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

    введите (если вы создаете поле со списком ) или кнопку (если вы создаете , выберите ), и выбранные элементы. Реквизит похож на тот, что предоставляется ванилью. Downshift для детей рендер проп.

    Эти реквизиты называются реквизитами геттера, и их возвращаемые значения деструктурированы как набор атрибутов ARIA и прослушивателей событий. Вместе с реквизитом и state props, они создают всю логику состояния, необходимую для раскрывающегося списка. стать доступным. Все необходимые функции должны быть предоставлены из коробки: навигация со стрелками между раскрывающимся списком и элементами, навигация между элементами себя, удаляя и добавляя элементы, а также полезные ария-live сообщение когда элемент был удален из выбора.

    Реквизит, используемый в примерах​

    В приведенных ниже примерах мы используем хук useMultipleSelection с useSelect и useCombobox , деструктурировать из его результата реквизиты геттера и переменные состояния. getDropdownProps можно вызвать с помощью параметр preventKeyAction . В некоторых случаях вы можете не захотеть, чтобы пользователь перейти из раскрывающегося списка к выбранным элементам или удалить их с помощью Возврат . Например, вы можете передать isOpen в качестве его значения, чтобы сохранить действия по удалению и навигации не происходят, пока открыто раскрывающееся меню. returned props are used as follows:

    Returned prop Element Comments
    getDropdownProps or Call optionally with preventKeyAction и деструктурировать возвращаемый объект на кнопке-переключателе (выбор) или элементе ввода (поле со списком).
    getSelectedItemProps Вызовите и деструктурируйте возвращенный объект в выбранном элементе item.
    selectedItems Значение состояния с выбранными в данный момент элементами. Используется для отображения тегов.
    добавить выбранный элемент Действие, которое добавляет элемент к выбору. Лучше всего используется в использует выбор и USECOMBOBOX PROP ONSTATECHANGE или ON SELECTECTEDITEMCHANGE
    elemereSelectedItem . Используется в обработчике onClick значка/кнопки размером X .

    Полная документация по всем возвращенным реквизитам, крючковым реквизитам и т. д. информацию ознакомьтесь со страницей Github.

    Использование с полем со списком

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

    В приведенном ниже примере к каждому элементу прикреплен значок размером X с Обратный вызов removeSelectedItem в обработчике onClick . Элементы добавляются с помощью функция addSelectedItem внутри обработчика onStateChange использоватьCombobox . Мы также контролируем selectedItem из useCombobox и передаем null значение, поскольку useMultipleSelection будет обрабатывать выбор элементов в этот случай.

    CodeSandbox для примера использования поля со списком.

    функция MultipleComboBoxExample() { константные книги = [ {автор: «Харпер Ли», название: «Убить пересмешника»}, {автор: 'Лев Толстой', название: 'Война и мир'}, {автор: 'Федор Достоевский', название: 'Идиот'}, {автор: «Оскар Уайльд», название: «Портрет Дориана Грея»}, {автор: 'Джордж Оруэлл', название: '1984'}, {автор: «Джейн Остин», название: «Гордость и предубеждение»}, {автор: 'Марк Аврелий', название: 'Размышления'}, {автор: 'Федор Достоевский', название: 'Братья Карамазовы'}, {автор: 'Лев Толстой', название: 'Анна Каренина'}, {автор: 'Федор Достоевский', название: 'Преступление и наказание'}, ] const initialSelectedItems = [книги[0],книги[1]] функция getFilteredBooks (selectedItems, inputValue) { const lowerCasedInputValue = inputValue. toLowerCase() вернуть books.filter (функция filterBook (книга) { возвращаться ( !selectedItems.includes(книга) && (book.title.toLowerCase().includes(lowerCasedInputValue) || book.author.toLowerCase().includes(lowerCasedInputValue)) ) }) } функция MultipleComboBox() { const [inputValue, setInputValue] = React.useState('') const [выбранные элементы, набор выбранных элементов] = React.useState(initialSelectedItems) константные элементы = React.useMemo( () => getFilteredBooks(selectedItems, inputValue), [выбранные элементы, входное значение], ) константа { получитьSelectedItemProps, получить DropdownProps, добавитьSelectedItem, удалитьВыбранныйЭлемент, } = useMultipleSelection({ выбранные элементы, onStateChange({selectedItems: newSelectedItems, тип}) { переключатель (тип) { case useMultipleSelection.stateChangeTypes .SelectedItemKeyDownBackspace: case useMultipleSelection. stateChangeTypes.SelectedItemKeyDownDelete: case useMultipleSelection.stateChangeTypes.DropdownKeyDownBackspace: case useMultipleSelection.stateChangeTypes.FunctionRemoveSelectedItem: setSelectedItems (новые выбранные элементы) сломать По умолчанию: сломать } }, }) константа { открыто, получитьToggleButtonProps, получитьLabelProps, получитьMenuProps, получитьInputProps, выделенный индекс, получитьItemProps, выбранный элемент, } = использоватьCombobox({ Предметы, itemToString (элемент) { вернуть изделие ? элемент.название : '' }, defaultHighlightedIndex: 0, // после выбора выделить первый элемент. выбранный элемент: ноль, stateReducer (состояние, actionAndChanges) { const {изменения, тип} = actionAndChanges переключатель (тип) { case useCombobox.stateChangeTypes.InputKeyDownEnter: case useCombobox. stateChangeTypes.ItemClick: случай использованияCombobox.stateChangeTypes.InputBlur: возвращаться { ...изменения, ...(changes.selectedItem && {isOpen: true, selectedIndex: 0}), } По умолчанию: вернуть изменения } }, onStateChange({ входное значение: новое входное значение, тип, выбранный элемент: новый выбранный элемент, }) { переключатель (тип) { case useCombobox.stateChangeTypes.InputKeyDownEnter: case useCombobox.stateChangeTypes.ItemClick: setSelectedItems([...selectedItems, новыйSelectedItem]) сломать case useCombobox.stateChangeTypes.InputChange: сетинпутвалуе (новый инпутвалуе) сломать По умолчанию: сломать } }, }) возвращаться (

    <ул {...getMenuProps()} className="абсолютный p-0 bg-white shadow-md max-h-80 overflow-scroll w-inherit" > {открыто && items.map((элемент, индекс) => ( <ли className={сх( выделенный индекс === индекс && 'bg-blue-300', selectedItem === item && 'шрифт-полужирный', 'py-2 px-3 shadow-sm flex flex-col', )} ключ = {`${item.value}${индекс}`} {...getItemProps({элемент, индекс})} > {item.title} {item. author} ))}
    ) } вернуть }

    Загрузка...

    Использование с select

    select с множественным выбором аналогичен combobox эквиваленту. Мы используйте базовый пример useSelect и добавьте выбранные элементы как элементы span . Также можно использовать пользовательские компоненты из библиотек пользовательского интерфейса, поскольку пользовательский интерфейс разработчик.

    CodeSandbox для выбора примера использования.

    функция MultipleSelectExample() { константные книги = [ {автор: «Харпер Ли», название: «Убить пересмешника»}, {автор: 'Лев Толстой', название: 'Война и мир'}, {автор: 'Федор Достоевский', название: 'Идиот'}, {автор: «Оскар Уайльд», название: «Портрет Дориана Грея»}, {автор: 'Джордж Оруэлл', название: '1984'}, {автор: «Джейн Остин», название: «Гордость и предубеждение»}, {автор: 'Марк Аврелий', название: 'Размышления'}, {автор: 'Федор Достоевский', название: 'Братья Карамазовы'}, {автор: 'Лев Толстой', название: 'Анна Каренина'}, {автор: 'Федор Достоевский', название: 'Преступление и наказание'}, ] функция getBooksFilter(selectedItems) { функция возврата booksFilter(книга) { вернуть selectedItems.indexOf (книга) < 0 } } функция множественного выбора () { константа { получитьSelectedItemProps, получить DropdownProps, добавитьSelectedItem, удалитьВыбранныйЭлемент, выбранные элементы, } = useMultipleSelection({initialSelectedItems: [книги[0], книги[1]]}) const items = books. filter(getBooksFilter(selectedItems)) константа { открыто, выбранный элемент, получитьToggleButtonProps, получитьLabelProps, получитьMenuProps, выделенный индекс, получитьItemProps, } = использоватьВыбрать({ выбранный элемент: ноль, defaultHighlightedIndex: 0, // после выбора выделить первый элемент. Предметы, stateReducer: (состояние, actionAndChanges) => { const {изменения, тип} = actionAndChanges переключатель (тип) { case useSelect.stateChangeTypes.ToggleButtonKeyDownEnter: case useSelect.stateChangeTypes.ToggleButtonKeyDownSpaceButton: case useSelect.stateChangeTypes.ItemClick: возвращаться { ...изменения, isOpen: true, // оставить меню открытым после выбора. } } вернуть изменения }, onStateChange: ({тип, selectedItem}) => { переключатель (тип) { case useSelect.stateChangeTypes. ToggleKeyDownEnter: case useSelect.stateChangeTypes.ToggleKeyDownSpaceButton: case useSelect.stateChangeTypes.ItemClick: если (выбранный элемент) { добавить выбранный элемент (выбранный элемент) } сломать По умолчанию: сломать } }, }) возвращаться (

    <ул {...getMenuProps()} className="абсолютный p-0 bg-white shadow-md max-h-80 overflow-scroll w-inherit" > {открыто && items. map((элемент, индекс) => ( <ли className={сх( выделенный индекс === индекс && 'bg-blue-300', selectedItem === item && 'шрифт-полужирный', 'py-2 px-3 shadow-sm flex flex-col', )} ключ = {`${item.value}${индекс}`} {...getItemProps({элемент, индекс})} > {item.title} {item.author} ))}
    ) } вернуть }