Функции высокого порядка с помощью 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 и Сезару Сампайо за рецензирование этой истории.