Автор оригинала: FreeCodeCamp Community Member.
Бхуван Малик
Во-первых, быстрый отвод каких редукторов в redux:
Редукторы – это не что иное, как чистые функции, которые принимают в предыдущем состоянии и действию и возврат нового государства.
Две вещи, чтобы иметь в виду, что они чистый и поэтому Не мутируйте государство Отказ
С этим с пути давайте приступим к делу.
Когда мы начинаем с redux, вот как мы пишем редуктор:
У нас есть поисковый редуктор, который обновляет состояние на основе различных действий, таких как настройка результатов поиска, обновление строки поиска или изменение состояния загрузчика/спина. Давайте предположим, что это будет Срежительный редуктор , который мы можем сочетать позже, используя Коммуникаторы (редукторы)
функция.
Теперь, если ты похож на меня, вы не будете необычные выключатели?
Они приходят с слишком много бойщиков самого собственного. Редуктор, управляемость многих типов действий, использующих случаи переключателей, было бы длительным. И это не будет хорошо выглядеть сейчас, будь то?! Идея состоит в том, чтобы бросить переключатель и двигаться к более функциональному подходу.
Давайте пересмотрим это немного
То, что мы можем сделать, это абстрактно все наш коммутатор логика в «Функции Catch» и создает объект, который отображает типы действий в соответствии с соответствующими функциями регистра. Мы назовем этот объект «ActionHandlers». Ниже приведен объект:
Как видите, у нас теперь есть сопоставление типов действий к функциям Catch.
Теперь мы должны создать функцию «Редуктора создателя», чтобы использовать наши Actionwandlers Отказ Эта функция вернет другую функцию, которая будет наша редуктор, переданный на Коммуникаторы ()
Отказ Вот:
Как вы можете видеть, Creatermentucer ()
это закрытие, возвращая другую функцию. Эта возвращенная функция удовлетворяет форму (предыдущий исход, действие) => Newst
поел и поэтому будет нашим фактическим редуктором нарезки.
Возвращенная функция редуктора может получить доступ к обоим Actionwandlers
и инициация
Аргументы это охватывают функцию из-за закрытия. инициация
используется в качестве аргумента по умолчанию для Государство
Отказ Внутри функции редуктора мы проверяем, если наш Actionwandlers
имеет свойство, сопоставив тип входящего действия. Если это так, мы выполняем эту функцию дела внутри Actionwandlers
, прохождение в государстве и действиях. Если тип действия не является свойством внутри Actionwandlers
Мы вернем предыдущее состояние.
Вы можете найти Creatermentucer ()
В Официальные документы Redux также.
Эта функция создания редуктора теперь может быть импортирована в разных файлах редукторов для создания всех наших срезов редукторов!
Вышеуказанная функция имеет Verbose прямо сейчас для объяснения точки зрения. Давайте немного немного! Ниже приведен новый и улучшенный файл редуктора. ?
Я укоротил все, используя лямбдас и библиотеку Ramda ‘ Прогресс «Функция. Что делает функцию пророктора, предпринимает 2-й аргумент (ключ), чтобы проверить внутри 3-го аргумента (объекта) и возвращает его значение, если найдено. В противном случае он возвращает по умолчанию, поставляемый из 1-го аргумента. 1-й аргумент, ‘ личность ‘, это функция, которая просто возвращает параметр, прилагаемый к нему.
Итак, функция возвращается, если найдена в Actionwandlers
который выполнен с использованием (Государство, действие
. В случае не обнаружена действие, пророктор возвращает идентичность, которая выполняется с тем же (государство, действие)
аргументы и возвращает первый прилагаемый аргумент, который является государство
( предыдущее состояние в этом случае).
Вы можете создавать свои собственные функции «Пророктора» и «Идентичность», Ramda – это то, что я использую.
Позвольте мне показать новый файл редуктора поиска для вас, чтобы получить общую картину того, как мы используем наши Творцектор
Функция с Actionwandlers
Отказ
Творцектор
Функция частично применяется и возвращает наш окончательный редуктор среза и экспортируется в файл, где мы используем Коммунатории
функция.
Ну, там вы идете, хорошим способом создания редукторов и уменьшение общей котельной. Я надеюсь, что это выгодно вам каким-то образом:)
Вот некоторые ссылки на мои предыдущие статьи:
JavaScript ES6 Функции: хорошие части ES6 предлагает несколько прохладных новых функций, которые делают программирование в JavaScript гораздо более гибким. Давайте поговорим о … Medium.freecodeCamp.com Руководство по переменным подъемам JavaScript? с пусть и const N Разработчики EW JavaScript часто испытывают трудное время понять уникальное поведение вариабельной/функциональной подъемной подъемники. Edium.freecodeCamp.com.
Мир ✌️.