Функции высокого порядка с помощью Reduce - Compose from Recompose #EN

Введение

Привет, как дела? Я хочу поговорить о продвинутой концепции Javascript.

Мотивация

Все знают, что Javascript очень сложен, когда мы начинаем продвигаться вперед в его исследованиях. Чтобы узнать об этом посте и о том, как вы можете его использовать, ваши навыки должны быть продвинуты в JS! Кто-то сказал мне это, и я тоже могу это сказать.

Давайте разберемся в этом алгоритме.

Минимальные требования

  • Мудрость базового Javascript (let, const, var, array, function)
  • Знание ES06, параметров деструктуризации, функций массива, HOF, «это все, ничего страшного».
  • Будьте любопытными, готовы учиться, задавать вопросы и давать отзывы.

Сценарий использования

Функция Compose очень полезна в приложениях React, которые используют библиотеку Recompose для работы с компонентами Smart / Dumb и для написания меньшего количества строк кода. Взгляните на строку выше, я вызвал функцию C ompose, которая возвращает в BirthdaysContainer чистый компонент Дни рождения, это просто просмотр (экран) дней рождения со всеми загруженными датами, данными и с Аполлоном. BirthdaysContainer чаще всего используется в Router, а Router отображается внутри App.js. Хорошо, давайте вернемся к основной теме, я просто хочу поделиться преимуществом использования перекомпоновки / компоновки.

Объяснение

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

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

Функция add1 получает число и составляет сумму на 1, функция add2 получает любое число, которое суммируется на 2, и так далее.

Сочинять

Взгляните на строку 10, console.log (), которая используется для отображения результатов вызова функции Compose.

Когда вызывается метод Compose, я передаю ему пять функций в качестве параметра, и, поскольку возврат compose является функцией, я передаю другой параметр (5) для возврата функции.

Если вы вызываете функцию и добавляете к ней возвращаемый параметр, она запускает функцию, возвращенную с полученным параметром. В приведенном выше случае я ставлю 5 и получаю сумму от 5 + 1 = 6.

Аргументы, полученные от Compose, будут деструктурированы и создан массив со всеми параметрами.

Вот почему я могу использовать метод reduce для параметра funcs, потому что funcs - это массив из полученных параметров.

(… Аргументы) = ›a (b (… аргументы)

Функция только что решена, но еще не вызвана, вызов функций происходит после каждой итерации, и Reduce возвращает функцию и запускает ее.

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

Мы ясно видим возврат и вызов функции. Функция, которая вызывает функцию, которая, в свою очередь, возвращает другую функцию, а именно функцию высокого порядка (HOF).

5 + 5 = 10 + 4 = 14 +3 = 17 + 2 = 19 + 1 = 20

Это все, ребята! (Все это показано только для этого фрагмента кода!) LOL.

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

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

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

Кроме того, я с нетерпением жду отзывов.

Спасибо за чтение!

Если вам понравилось, я был бы признателен за несколько аплодисментов! знак равно

PS. И последнее, но не менее важное: огромное спасибо @ giorgibastos и Сезару Сампайо за рецензирование этой истории.