Работа редуктора


устройство, принцип работы, виды, назначение

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

Содержание

Устройство и принцип работы

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

Устройство

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

Шестерни и колеса неподвижно закреплены на валах или изготовлены совместно с ними. В корпусе может быть от одной до нескольких пар зубчатых зацеплений. На сборочном чертеже редуктора хорошо видно его устройство и составные части:

  • корпус;
  • крышка корпуса;
  • пары в зацеплении;
  • валы;
  • подшипники;
  • уплотнительные кольца;
  • крышки.

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

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

Принцип действия

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

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

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

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

Маркировка

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

  • цилиндрическое – Ц;
  • червячное – Ч;
  • коническое – К;
  • глобоидное – Г;
  • волновые – В;
  • планетарное – П.

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

  • цилиндрически-червячные – ЦЧ;
  • червячно-цилиндрические – ЧЦ;
  • конически-цилиндрические – КЦ.

Количество передач данного вида указывается цифрой перед буквой.

Горизонтальное расположение считается нормой и не имеет своего обозначения. Для вертикального узла после обозначения типа передач ставится буква В. Б – означает быстроходную модель. За ним ставится условное числовое обозначение варианта сборки.

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

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

Например: 1Ц2У-250-31,5-22-М-У2. Двухступенчатый цилиндрический с горизонтальным расположением. Межцентровое расстояние валов тихоходной ступени 250 мм, передаточное число 31,5. Вариант сборки узла 22, хвостовик по типу муфты, климатическое исполнение соответствует ГОСТ 15150-69.

Скачать ГОСТ 15150-69

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

Технические характеристики

Редуктора отличаются внешне по размерам и форме. Внутреннее строение разнообразное. Объединяет их всех перечень технических характеристик, по которым они подбираются на различные машины и станки. К основным параметрам редуктора относятся:

  • передаточное число;
  • передаточное отношение;
  • значение крутящего момента редуктора;
  • расположение;
  • количество ступеней;
  • крутящий момент.

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

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

Передаточное число

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

U = Z2/Z1;

где U – передаточное число;

Z1 число зубьев шестерни;

Z2 число зубьев зубчатого колеса.

Модуль зубьев шестерни и колеса одинаковый. Их количество напрямую зависит от диаметра. Поэтому можно использовать формулу:

U = D2/D1;

Где D2 и D1 диаметры колеса и шестерни соответственно.

Расчет общего передаточного момента определяется как произведение передаточных чисел всех пар:

Uр = U1× U2× … × Un;

Где Uр передаточное число;

U1, U2, Un передаточные числа зубчатых пар.

При расчете передаточного числа берется отношение количества зубьев колеса и заходов червяка.

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

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

Передаточное отношение

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

где U12 – передаточное отношение;

W1 и W2 – угловые скорости;

n1 и n2 – частота вращения.

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

Крутящий момент

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

Крутящий момент входного двигателя на входе, умножается на передаточное число. Для получения более точного фактического значения надо умножить на значение КПД. Коэффициент зависит от количества ступеней и типа зацепления. Для прямозубой конической пары он равен 98%.

Назначение механизма

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

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

Скорость вращения электродвигателя может достигать 1500 об/мин. Для работы станка оборудования она не подходит. При этом, если к шкиву мотора напрямую прикрепить груз, он не сможет сдвинуть его с места.

Функции узла, уменьшить скорость вращения в десятки раз и настолько же увеличить крутящий момент – усилие, с которым машина будет совершать работу.

Виды редукторов

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

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

  • типу зубчатого зацепления;
  • количеству передач;
  • способу монтажа;
  • пространственное положение осей и зубчатых соединений.

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

По типу зубчатого зацепления и форме шестерни, они делятся:

  • цилиндрические;
  • конические;
  • червячные;
  • планетарные;
  • комбинированные;
  • волновые.

Комбинированные модели могут иметь различные типу зубчатых зацеплений.

Цилиндрические

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

По форме зуба цилиндрические модели делятся:

  • прямозубые;
  • косозубые;
  • шевронные.

По кинематической схеме они бывают прямолинейные и разветвленные.

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

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

Недостаток в сильном шуме во время работы и малой мощности. Чтобы предать большое усилие, колеса надо делать широкими, крупногабаритными.

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

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

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

Работают шевронные зацепления тихо. Недостаток в сложной и длительной технологии нарезания зубьев.

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

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

Конические

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

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

Червячный

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

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

Червячные редукторы создают с одной и двумя передачами. Часто делают комбинированные с коническими зацеплениями.

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

Недостаток в низком КПД и сильном нагреве во время работы. необходимо делать систему охлаждения.

Планетарный

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

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

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

Комбинированные

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

Мотор-редуктор – собранные в одном корпусе двигатель и передаточный узел. Привод обычно изготавливается с коническими или червячными парами. Количество передач одна и две.

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

Рекомендации по выбору

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

Следует обратить на расположение валов, оно в цилиндрических моделях может быть в одну сторону.

Крепление осуществляется с помощью фланца непосредственно к валу двигателя и с помощью отверстий в подошве устанавливается на платформу.

В маркировке указано межцентровое расстояние между валами. Этот размер имеет конструктивное значение при установке узла и соединения его с двигателем и валом рабочего механизма.

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

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

Распространенные неисправности

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

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

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

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

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

Редукторы, мотор-редукторы: ООО "Приводные технологии"

+7 (495) 369- 04- 89 +7 (910) 726- 725- 4 +375 (17) 272- 04- 08 +375 (29) 61- 787- 61 [email protected]

Редукторы, мотор-редукторы, редукторные механизмы:
червячные редукторы, цилиндрические редукторы, конические редукторы,
планетарные редукторы. Бытовая и промышленная приводная техника:
мини редукторы, электродвигатели, двигатели постоянного тока, DC моторы,
шаговые двигатели, устройства плавного пуска, частотные преобразователи.
Вариаторы, мотор-барабаны, редукторы для смесителей, сервоприводы.

о компании

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

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

новости и статьи

Мотор-редукторы Bauer Gear Motor GmbH

09.04.2014

На сегодняшний день из-за санкционных режимов поставка данной продукции невозможна, следует продумать варианты по подбору соответствующего аналога. Совершенная и качественная приводная техника немецкого производителя Bauer Gear Motor GmbH. широко ... подробнее

Мотор-редукторы Getriebebau NORD Drive Systems GmbH & Co. KG (Германия)

02.04.2013

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

Предлагаем электродвигатели со встроенным электромагнитным тормозом в кратчайшие сроки

09.08.2021

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

Электродвигатели и технические решения IP66 для наружного использования

05. 05.2020

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

ещё новости и статьи...

новое на сайте
DC мотор редуктор 2DC15W-GN / 2GN20 ~ 180 (15 Ватт)

10 об/мин ... 90 об/мин

    DC мини мотор редуктор 2DC15W-GN / 2GN20 ~ 180 (15 Ватт) - компактный электромеханический привод постоянного тока, вращательное усилие на конце выходного вала: 1,7 Нм ~ 5.0 Нм. Степень защиты IP44. Температура эксплуатации: -10С - + 40С. Влажность ...

Кубическо-шариковые винтовые домкраты DMD10

    Максимальные статические нагрузки – 10kN; Размер винта – TR20x5; Передаточное число - 5:1 и 20:1; Ход за 1 оборот – 1.0 мм и 025 мм соответственно; Материал корпуса – ковкий чугун; Вес домкрата (без штока) – 6кг; Вес 100мм штока с защитной трубой – . ..

Высокоэффективные винтовые домкраты DMT-1T

5:1, 10:1 и 20:1

    Максимальные статические нагрузки – 1т.; Размер винта – TR24x5; Передаточное число - 5:1, 10:1 и 20:1; Ход за 1 оборот – 1.0 мм, 0.5 мм и 025 мм соответственно; Условное обозначение Размер винта Передаточное число Ход винта за 1 оборот Входная ...

Высокоэффективные винтовые домкраты DMT-0.5T

5:1, 10:1 и 20:1

    Максимальные статические нагрузки – 0.5т.; Размер винта – TR20x5; Передаточное число - 5:1 и 10:1; Ход за 1 оборот – 1.0 мм, 0.5 мм и 025 мм соответственно; Условное обозначение Размер винта Передаточное число Ход винта за 1 оборот Входная скорость ...

* Копирование информации с сайта запрещено законом об авторском праве.

© 2022 Приводные технологии

Российская Федерация
+7 (495) 369-04-89
+7 (910) 726-725-4 (МТС) Смоленск

                                        

Республика Беларусь
+375 17 272-04-08 (т/ф) Минск
+375 29 61-787-61 (Velcom) Минск

                                        

tech-privod. com

Сайт работает на платформе Nestorclub.com

Что такое редуктор? | Цилиндрический редуктор, конический редуктор, конический и цилиндрический редуктор, червячный редуктор, планетарный редуктор

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

Что такое редуктор?

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

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

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

Обзор принципа действия редуктора

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

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

Разница между мотор-редуктором и редуктором

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

Электродвигатели имеют переменную скорость, которая обычно соответствует количеству полюсов в двигателе. Например, выходная скорость двигателя с 4 полюсами, использующего источник питания 60 Гц, будет составлять около 1800 об/мин, 6 полюсов — около 1200 об/мин, 8 полюсов — около 900 об/мин. Двигатели с большим числом полюсов дороже, работают медленнее и имеют более высокий крутящий момент. Поскольку в обычных двигателях обычно используется 4 полюса, вместо покупки более дорогого двигателя с большим количеством полюсов можно использовать 4-полюсный двигатель вместе с редуктором, чтобы получить ту же скорость и крутящий момент, что и у двигателя с большим количеством полюсов. Редукторы, используемые для этой цели, обычно имеют относительно небольшие размеры.

Преимущества использования редукторов

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

Распространенные типы редукторов
  1. Одноступенчатый цилиндрический редуктор:

    Одноступенчатый цилиндрический редуктор подходит для передаточного отношения 3~5:1. Зубья шестерни могут быть прямыми, спиральными или в форме елочки. Коробка передач обычно изготавливается из чугуна или сварных стальных листов. Обычно используются роликовые подшипники, а подшипники скольжения используются только при больших нагрузках или чрезвычайно высоких скоростях.

  2. Двухступенчатый цилиндрический редуктор:

    Двухступенчатые цилиндрические редукторы делятся на три типа: цилиндрический редуктор расширительного типа, цилиндрический редуктор разъемного типа и цилиндрический редуктор коаксиального типа, и подходят для передаточных чисел 8-40.

  • Тип расширения: Высокоскоростные или низкоскоростные косозубые шестерни с длинными валами. Поскольку входной и выходной концы крутящего момента находятся далеко от зоны зацепления шестерни, а из-за асимметричного расположения шестерни относительно подшипника возникает неравномерное распределение нагрузки по ширине зуба, вызванное изгибом и деформацией вала. Для уменьшения неравномерности распределения по шестерням требуется высокая жесткость вала. Наиболее широко используется простая структура.
  • Тип ответвления: обычно используется для высокоскоростных приложений. Поскольку шестерни расположены симметрично, их можно использовать там, где усилие на шестерню и подшипник будет большим. Чтобы общая осевая сила на валу была меньше, направления спирали двух пар шестерен должны быть противоположными. Эта конструкция более сложная, и ее часто применяют в местах с большой мощностью и переменными нагрузками.
  • Коаксиальный тип: осевой размер редуктора больше, промежуточный вал длиннее, а жесткость низкая. Когда глубина погружения в масло двух больших шестерен одинакова, грузоподъемность высокоскоростных шестерен не может быть использована полностью. Эти шестерни часто используются в местах, где входной и выходной валы соосны.
  • Одноступенчатый конический редуктор:

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

  • Редуктор конический и цилиндрический:

    Конические и цилиндрические редукторы подходят для передаточных чисел 8-15:1. Эти шестерни лучше всего подходят для высокоскоростных приложений, где используются конические шестерни небольшого размера. Конические шестерни могут иметь прямые или криволинейные зубья. Цилиндрические шестерни обычно изготавливают с косозубыми зубьями, которые могут компенсировать часть осевой силы конических шестерен.

  • Червячный редуктор:

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

  • Червячный редуктор подходит для передаточного отношения 10~80. Структура компактна, передаточное отношение большое, но эффективность передачи низкая, и она подходит для случаев малой мощности и работы с зазорами. Когда окружная скорость червяка составляет V≤4~5 м/с, червяк устанавливается снизу, и условия смазки и охлаждения улучшаются; когда V ≥ 4 ~ 5 м / с, потери масла при перемешивании больше, и червяк обычно устанавливается сверху.
  • Планетарный редуктор:

    Из-за конструкции планетарного редуктора (планетарных редукторов) минимальное одноступенчатое снижение составляет 3, а максимальное обычно не превышает 10. Обычное передаточное отношение составляет 3/4/5/6/8/10, а количество ступеней редуктора в основном не превышает 3-х, но бывает и велико. Пользовательский редуктор коэффициента редукции имеет 4 уровня редукции.

    По сравнению с другими редукторами, планетарный редуктор обладает высокой жесткостью, высокой точностью (одноступенчатый может быть в течение 1 минуты), высокой эффективностью передачи (одноступенчатый 97%-98%), высокий крутящий момент, объемное соотношение, срок службы без обслуживания и т. д. функции. Из-за этих характеристик планетарные редукторы в основном устанавливаются на шаговые двигатели и серводвигатели для снижения скорости, увеличения крутящего момента и согласования инерции.

  • Реферальная ссылка

    Основы Redux, часть 3: состояние, действия и редукторы

    Что вы узнаете
    • Как определить значения состояния, которые содержат данные вашего приложения
    • Как определить объекты действий, которые описывают, что происходит в ваше приложение
    • Как написать функции редуктора, которые вычисляют обновленное состояние на основе существующего состояния и действий

    Введение

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

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

    Внимание

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

    Настройка проекта

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

    Для начала вы можете открыть и разветвить этот CodeSandbox:

    Вы также можете клонировать тот же проект из этого репозитория Github. После клонирования репозитория вы можете установить инструменты для проекта с помощью npm install и запустить его с помощью npm start .

    Если вы хотите увидеть окончательную версию того, что мы собираемся построить, вы можете просмотреть tutorial-steps ветку или просмотреть окончательную версию в этой CodeSandbox.

    Создание нового проекта Redux + React​

    После того, как вы закончите это руководство, вы, вероятно, захотите попробовать работать над своими собственными проектами. Мы рекомендуем использовать шаблоны Redux для Create-React-App как самый быстрый способ создать новый проект Redux + React . Он поставляется с уже настроенным Redux Toolkit и React-Redux, используя модернизированную версию примера «встречного» приложения, которое вы видели в части 1. Это позволяет вам сразу перейти к написанию фактического кода приложения без необходимости добавлять пакеты Redux и настраивать магазин.

    Если вы хотите узнать подробности о том, как добавить Redux в проект, см. это объяснение:

    Подробное объяснение: добавление Redux в проект React

    Шаблон Redux для CRA поставляется с уже настроенным Redux Toolkit и React-Redux. . Если вы настраиваете новый проект с нуля без этого шаблона, выполните следующие действия:

    • Добавьте пакеты @reduxjs/toolkit и react-redux
    • Создайте магазин Redux с помощью RTK configureStore API и передать хотя бы одну функцию редуктора
    • Импортировать хранилище Redux в файл точки входа вашего приложения (например, src/index.js )
    • Оберните корневой компонент React с помощью компонент из React-Redux, например:
     ReactDOM.render( 


    ,
    document. getElementById('root')
    )
    Изучение Первоначальный проект

    Этот исходный проект основан на стандартном шаблоне проекта Create-React-App с некоторыми изменениями.

    Давайте кратко рассмотрим, что содержит исходный проект:

    • /src
      • index.js : файл точки входа для приложения. Он отображает основной компонент .
      • App.js : основной компонент приложения.
      • index.css : стили для всего приложения
      • /api
        • client.js : небольшой клиент запросов AJAX, который позволяет нам делать запросы GET и POST
        • server.js : предоставляет поддельный REST API для наших данных. Наше приложение получит данные из этих поддельных конечных точек позже.
      • /exampleAddons : содержит некоторые дополнительные дополнения Redux, которые мы будем использовать позже в руководстве, чтобы показать, как все работает

    Если вы загрузите приложение сейчас, вы должны увидеть приветственное сообщение, но остальное в противном случае приложение пусто.

    Итак, приступим!

    Запуск примера приложения Todo

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

    Определение требований​

    Начнем с определения первоначальных бизнес-требований для этого приложения:

    • Пользовательский интерфейс должен состоять из трех основных разделов:
      • Поле ввода, позволяющее пользователю вводить текст нового элемента списка дел
      • Список всех существующих элементов списка дел незавершенные задачи и показывает параметры фильтрации
    • Элементы списка задач должны иметь флажок, который переключает их статус «завершено». Мы также должны иметь возможность добавить цветовую кодировку тег категории для предопределенного списка цветов и удаления элементов списка дел.
    • Счетчик должен иметь множественное число активных задач: «0 элементов», «1 элемент», «3 элемента» и т. д.
    • Должны быть кнопки, чтобы пометить все задачи как завершенные и очистить все выполненные задачи, удалив их
    • Должно быть два способа фильтрации отображаемых задач в списке:
      • Фильтрация на основе отображения задач «Все», «Активные» и «Завершенные»
      • Фильтрация на основе выбора одного или нескольких цветов и отображения любых задач чья метка соответствует этим цветам

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

    Конечная цель — приложение, которое должно выглядеть так:

    Проектирование значений состояния

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

    Концептуально существует два основных аспекта этого приложения:

    • Фактический список текущих задач
    • Текущие параметры фильтрации

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

    Для каждого элемента задачи нам нужно хранить несколько частей информации:

    • Текст, который ввел пользователь
    • Логический флаг, указывающий, выполнено задание или нет
    • Уникальное значение идентификатора
    • Цветовая категория, если она выбрана

    Наше поведение фильтрации, возможно, можно описать с помощью некоторых перечисленных значений: : «Красный», «Желтый», «Зеленый», «Синий», «Оранжевый», «Фиолетовый»

    Глядя на эти значения, мы также можем сказать, что задачи — это «состояние приложения» (основные данные, приложение работает с), в то время как значения фильтрации — «состояние пользовательского интерфейса» (состояние, которое описывает, что приложение делает прямо сейчас). Это может быть полезно подумайте об этих разных категориях, чтобы понять, как используются разные части состояния.

    Проектирование структуры состояния

    В Redux состояние нашего приложения всегда хранится в простых объектах и ​​массивах JavaScript . Это означает, что вы не можете поставить другие вещи в состояние Redux — никаких экземпляров классов, встроенных типов JS, таких как Map / Set Promise / Date , функций или чего-либо еще, что не является простыми данными JS.

    Корневое значение состояния Redux почти всегда является простым JS-объектом , внутри которого вложены другие данные.

    Основываясь на этой информации, теперь мы должны быть в состоянии описать типы значений, которые нам нужны в нашем состоянии Redux:

    • Во-первых, нам нужен массив объектов элементов задач. Каждый элемент должен иметь эти поля:
      • ID : уникальный номер
      • Текст : текст, набранный пользователь в
      • Завершен : A Boolean Flag
      • Color : Необязательная Calecory
      • 777777777777777777777777.
      • Затем нам нужно описать наши параметры фильтрации. Нам нужно:
        • Текущее «завершенное» значение фильтра
        • Массив выбранных в данный момент цветовых категорий

      Итак, вот как может выглядеть пример состояния нашего приложения:

       const todoAppState = { 
      todos: {
      id: 0, текст: «Изучить React», завершено: true},
      {id: 1, текст: «Изучить Redux», завершено: false, цвет: «фиолетовый»},
      {id: 2, текст: «Сборка что-нибудь веселое!», завершено: false, цвет: «синий» }
      ],
      фильтров: {
      статус: «Активный»,
      цветов: ['красный', 'синий']
      }
      }

      Важно отметить, что допустимо иметь другие значения состояния вне Redux! Этот пример пока достаточно мал, так что у нас действительно есть все наше состояние в хранилище Redux, но, как мы увидим позже, некоторые данные действительно не нужно хранить в Redux (например, «это раскрывающееся меню открыто?» или «текущее значение ввода формы»).

      Проектирование действий

      Действия — это простые объекты JavaScript, которые имеют введите поле . Как упоминалось ранее, вы можете думать о действии как о событии, описывающем что-то, что произошло в приложении .

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

      • добавить новую запись задачи на основе текста, введенного пользователем
      • переключить состояние выполнения задачи
      • выбрать цветовую категорию для задачи
      • Удалить задачу
      • Пометить все задачи как выполненные
      • Удалить все завершенные задачи
      • Выбрать другое значение «завершенного» фильтра
      • Добавить новый цветной фильтр
      • Удалить цветной фильтр

      необходимо описать происходящее в поле action.payload . Это может быть число, строка или объект с несколькими полями внутри.

      Магазин Redux не заботится о фактическом тексте поле action.type есть. Однако ваш собственный код будет выглядеть в action.type , чтобы узнать, требуется ли обновление. Кроме того, вы будете часто просматривать строки типа действия в Redux. Расширение DevTools во время отладки, чтобы увидеть, что происходит в вашем приложении. Итак, старайтесь выбирать типы действий, которые читабельно и ясно описывайте происходящее - вам будет намного легче понять вещи, когда вы посмотрите на них позже!

      На основе этого списка вещей, которые могут произойти, мы можем создать список действий, которые будет использовать наше приложение:

      • {тип: 'todos/todoAdded', полезная нагрузка: todoText}
      • {тип: 'todos/todoToggled', полезная нагрузка: todoId}
      • {тип: 'todos, payloadSelected' todoId, color}}
      • {type: 'todos/todoDeleted', полезная нагрузка: todoId}
      • {type: 'todos/allCompleted'}
      • 6 {type: 'dCleared34006 {type} 'dCleared3
      • {тип: 'filters/statusFilterChanged', полезная нагрузка: filterValue}
      • {type: 'filters/colorFilterChanged', payload: {color, changeType}}

      В этом случае действия в основном имеют один дополнительный фрагмент данных, поэтому мы можем поместить его непосредственно в действие . Поле .payload . Мы могли бы разделить поведение цветового фильтра на два действия: одно для «добавлено» и одно для «удалено», но в этом случае мы сделаем это как одно действие с дополнительным полем внутри специально, чтобы показать, что мы можем иметь объекты в качестве полезной нагрузки действия.

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

      Написание редукторов

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

      Редьюсеры — это функции, которые принимают текущее состояние и действие в качестве аргументов и возвращают новый результат состояния . Другими словами, (состояние, действие) => newState .

      Создание корневого редуктора

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

      Давайте начнем с создания файла reducer.js в src вместе с index.js и App.js .

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

      src/reducer.js

       const initialState = { 
      todos: [
      { id: 0, text: 'Learn React', Completed: true},
      {идентификатор: 1, текст: «Изучите Redux», завершено: ложь, цвет: «фиолетовый»},
      {идентификатор: 2, текст: «Создайте что-нибудь веселое!», завершено: ложь, цвет: «синий»}
      ],
      фильтров: {
      статус: 'Все',
      цветов: []
      }
      }

      // Использовать initialState как значение по умолчанию
      экспортировать функцию по умолчанию appReducer(state = initialState, action) {
      // редюсер обычно смотрит на поле типа действия, чтобы решить, что происходит или нет
      // заботится об этом конкретном действии, вернуть существующее состояние без изменений
      return state
      }
      }

      Редуктор может быть вызван с undefined в качестве значения состояния при инициализации приложения. Если это произойдет, нам нужно предоставить начальное значение состояния, чтобы остальной части кода редуктора было с чем работать. Редукторы обычно используют синтаксис аргумента по умолчанию ES6 для предоставления начального состояния: (состояние = initialState, действие) .

      Далее добавим логику для обработки 'todos/todoAdded' действие.

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

      src/reducer.js

       function nextTodoId(todos) { 
      const maxId = todos.reduce((maxId, todo) => Math.max(todo.id, maxId), -1)
      return maxId + 1
      }

      // Использовать initialState как значение по умолчанию
      export function default appReducer(state = initialState, action) {
      // Редюсер обычно смотрит на поле типа действия, чтобы решить, что происходит необходимо вернуть новый объект состояния
      return {
      // который имеет все существующие данные состояния
      . ..state,
      // но имеет новый массив для поля `todos`
      todos: [
      // со всеми старый todos
      ...state.todos,
      // и новый объект todo
      {
      // Используйте автоматически увеличивающийся числовой идентификатор для этого примера
      id: nextTodoId(state.todos),
      текст: action.payload,
      завершено: false
      }
      ]
      }
      }
      по умолчанию:
      // Если этот редуктор не распознает тип действия или не распознает
      // заботиться об этом конкретном действии, вернуть существующее состояние без изменений
      вернуть состояние
      }
      }

      Это... ужасно много работы, чтобы добавить один элемент списка дел в состояние. Зачем нужна вся эта дополнительная работа?

      Правила редукторов

      Ранее мы говорили, что 9Редьюсеры 0094 должны всегда следовать некоторым специальным правилам :

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

      «Побочный эффект» — это любое изменение состояния или поведения, которое можно наблюдать за пределами возврата значения из функции . Вот некоторые распространенные виды побочных эффектов:

      • Запись значения в консоль
      • Сохранение файла
      • Установка асинхронного таймера
      • Выполнение HTTP-запроса AJAX
      • Изменение некоторого состояния, существующего вне функции, или преобразование аргументов в функцию
      • Генерация случайных чисел или уникальных случайных идентификаторов (например, Math.random() или Date.now() )

      Любая функция, которая следует этим правилам, также известна как "чистая" функция , даже если она специально не написана как функция-редуктор.

      Но чем важны эти правила? Есть несколько разных причин:

      • Одна из целей Redux — сделать ваш код предсказуемым. Когда выходные данные функции вычисляются только из входных аргументов, легче понять, как работает этот код, и протестировать его.
      • С другой стороны, если функция зависит от внешних переменных или ведет себя случайным образом, вы никогда не знаете, что произойдет, когда вы ее запустите.
      • Если функция изменяет другие значения, включая свои аргументы, это может неожиданно изменить способ работы приложения. Это может быть распространенным источником ошибок, таких как «Я обновил свое состояние, но теперь мой пользовательский интерфейс не обновляется, когда должен!»
      • Некоторые возможности Redux DevTools зависят от того, правильно ли ваши редьюсеры следуют этим правилам

      Правило «неизменяемых обновлений» особенно важно, и о нем стоит поговорить подробнее.

      Редукторы и неизменяемые обновления

      Ранее мы говорили о «мутации» (изменение существующих значений объекта/массива) и «неизменяемости» (обработка значений как чего-то, что нельзя изменить).

      предупреждение

      В Redux наши редукторы никогда не могут изменять исходные / текущие значения состояния!

       // ❌ Недопустимо — по умолчанию это изменит состояние! 
      state.value = 123

      Есть несколько причин, по которым вы не должны изменять состояние в Redux:

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

      Итак, если мы не можем изменить исходные данные, как нам вернуть обновленное состояние?

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

       // ✅ Это безопасно, потому что мы сделали копию 
      return {
      . ..state,
      value: 123
      }

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

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

      Однако, если вы думаете, что "написание неизменяемых обновлений вручную таким способом сложно запомнить и сделать правильно"... да, вы правы! :)

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

      В реальных приложениях вам не придется писать эти сложные вложенные неизменяемые обновления вручную . В части 8: Modern Redux с Redux Toolkit вы узнаете узнайте, как использовать Redux Toolkit, чтобы упростить написание неизменяемой логики обновления в редьюсерах.

      Обработка дополнительных действий

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

      src/reducer.js

       функция экспорта по умолчанию appReducer(state = initialState, action) { 
      switch (action.type) {
      case 'todos/todoAdded': {
      return {
      ...state,
      todos: [
      ...state.todos ,
      {
      id: nextTodoId(state.todos),
      text: action.payload,
      complete: false
      }
      ]
      }
      }
      case 'todos/todoToggled': {
      return {
      // Снова скопируйте весь объект состояния
      ...state,
      // На этот раз нам нужно сделать копию старого массива задач
      todos: state.todos.map(todo => {
      // Если это не та задача, которую мы ищем, не трогайте ее
      if (todo.id !== action.payload) {
      return todo
      }

      // Мы нашли задачу, которую необходимо изменить Вернуть копию:
      return {
      . ..todo,
      // Перевернуть флаг завершения
      Completed: !todo.completed
      }
      })
      }
      }
      по умолчанию:
      состояние возврата
      }
      }

      И поскольку мы сосредоточились на состоянии задач, давайте также добавим случай для обработки действия «изменение видимости»:

      src/reducer.js

       функция экспорта по умолчанию appReducer(state = initialState, action) { 
      switch (action.type) {
      case 'todos/todoAdded': {
      return {
      ...state,
      todos: [
      ...state.todos,
      {
      id: nextTodoId(state.todos),
      текст: action.payload,
      завершено: false
      }
      ]
      }
      }
      case 'todos/todoToggled': {
      return {
      ... состояние,
      todos: state.todos.map(todo => {
      if (todo.id !== action.payload) {
      return todo
      }

      return {
      ...todo,
      complete: !todo.completed
      }
      })
      }
      }
      case 'filters/statusFilterChanged': {
      return {
      // Копируем все состояние 90 . ..state,
      // Перезаписать значение фильтра
      filter: {
      // скопировать другие поля фильтра
      ...state.filters,
      // И заменить поле статуса новым значением
      status: action.payload
      }
      }
      }
      по умолчанию:
      состояние возврата
      }
      }

      Мы обработали только 3 действия, но это уже слишком долго. Если мы попытаемся обработать каждое действие в этом редукторе функция, будет трудно прочитать все это.

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

      Разделение редукторов

      Как часть этого редьюсера Redux обычно разделяются на части в зависимости от раздела состояния Redux, который они обновляют . Наше состояние приложения todo в настоящее время имеет два раздела верхнего уровня: state.todos и state.filters . Итак, мы можем разделить функцию большого корневого редуктора на два меньших редуктора — todosReducer и filterReducer .

      Итак, где должны жить эти разделяющие редюсерные функции?

      Мы рекомендуем организовывать папки и файлы вашего приложения Redux на основе «функций» — код, относящийся к определенной концепции или области вашего приложения. Код Redux для конкретной функции обычно записывается в виде одного файла, известного как файл "slice" , который содержит всю логику редуктора и весь код, связанный с действиями, для этой части состояния вашего приложения.

      Из-за этого редуктор для определенного раздела состояния приложения Redux называется «редуктор среза» . Как правило, некоторые из объектов действия будут тесно связаны с определенным редуктором слайсов, поэтому строки типа действия должны начинаться с имени этой функции (например, 9).0106 'todos' ) и описать произошедшее событие (например, 'todoAdded' ), объединенные в одну строку ( 'todos/todoAdded' ).

      В нашем проекте создайте новую папку features , а затем папку todos внутри нее. Создайте новый файл с именем todosSlice.js и давайте вырежем и вставим исходное состояние, связанное с задачей, в этот файл: текст: «Изучай React», завершено: true },
      {id: 1, text: 'Изучай Redux', завершено: false, цвет: 'фиолетовый'},
      {id: 2, text: 'Сделай что-нибудь веселое!', завершено: false, цвет: 'синий'}
      ]

      function nextTodoId(todos) {
      const maxId = todos.reduce((maxId, todo) => Math.max(todo.id, maxId), -1)
      return maxId + 1
      }

      экспортировать функцию по умолчанию todosReducer (state = initialState, action) {
      switch (action.type) {
      default:
      return state
      }
      }

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

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

      Вот как выглядит обновленный редуктор после выполнения этих действий:

      src/features/todos/todosSlice.js

       функция экспорта по умолчанию todosReducer(state = initialState, action) { 
      switch (action.type) {
      case 'todos/todoAdded': {
      // Может возвращать только новые задачи массив - вокруг него нет лишнего объекта : {
      return state.map(todo => {
      if (todo.id !== action.payload) {
      return todo
      }

      return {
      ...todo,
      complete: !todo.completed
      }
      })
      }
      по умолчанию:
      return state
      }
      }

      .

      Теперь мы можем сделать то же самое для логики видимости. Создайте src/features/filters/filtersSlice.js и переместите туда весь код, связанный с фильтрами:

      src/features/filters/filtersSlice. js

       const initialState = { 
      status: 'All',
      colors: []
      }

      функция экспорта по умолчанию filterReducer(state = initialState, action) {
      switch (action.type) {
      case 'filters/statusFilterChanged': {
      return {
      // Опять же, на один уровень вложенности меньше скопировать
      ...состояние,
      статус: action.payload
      }
      }
      по умолчанию:
      вернуть состояние
      }
      }

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

      Объединение редукторов

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

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

      src/reducer.js

       импортировать todosReducer из './features/todos/todosSlice' 
      импортировать filterReducer из './features/filters/filtersSlice'

      экспортировать функцию по умолчанию rootReducer (состояние = {}, действие) {
      / / всегда возвращать новый объект для корневого состояния
      return {
      // значение `state.todos` равно тому, что возвращает редюсер todos
      todos: todosReducer(state.todos, action),
      // Для обоих редьюсеров мы передавать только в свою часть фильтры состояния
      : filterReducer(state.filters, action)
      }
      }

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

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

      combReducers

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

      Базовая библиотека Redux включает утилиту combReducers , которая выполняет тот же шаблонный шаг за нас. Мы можем заменить наш написанный от руки rootReducer на более короткий, сгенерированный combReducers .

      Теперь, когда нам нужно combReducers , пришло время установить основную библиотеку Redux :

       npm install redux 

      После этого мы можем импортировать combReducers и использовать его:

      src/reducer.js

       import {combinedReducers} из 'redux' 

      {
      // Определяем поле состояния верхнего уровня с именем `todos`, обрабатываемое `todosReducer` имена ключей станут ключами в вашем корневом объекте состояния, а values ​​— это функции редуктора слайсов, которые знают, как обновлять эти слайсы состояния Redux.

      Помните, имена ключей, которые вы даете combReducers , решают, какими будут имена ключей вашего объекта состояния!

      Чему вы научились

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

      Вот содержимое нашего приложения:

      Сводка