В React это называется функцией высшего порядка (HOC), но на самом деле это просто заимствование старой концепции функционального программирования. действительно является приложением curry .
Простой пример
Допустим, вы хотите создать add2
и add3
функция. Вы бы сделали что-то вроде этого:
// add2 = a => Number
const add2 = a => a + 2;
const sum2 = add2(5) // => 7
// add3 = a => Number
const add3 = a => a + 3;
const sum3 = add3(5) // => 8
Проблема в том, что это не очень масштабируемо. Что если вам нужно создать add4, add5... add100
? Именно здесь в игру вступает карри;
// add = a => b => Number
const add = a => b => a + b;
// add(2)(5)
const add2 = add(2);
const sum2 = add2(5); // => 7
// add(3)(5)
const add3 = add(3);
const sum3 = add3(5); // => 8
...
// add(100)(5)
const add100 = add(100);
const sum100 = add100(5); // => 105
Теоретически вы можете создать бесконечное количество add
функций на ваш вкус.
Пример кейса
В вашем примере addUrlProps([options])(WrappedComponent)
делает то же самое.
// addUrlProps([options])(WrappedComponent)
const foo = addUrlProps([options]);
const HOC = foo(WrappedComponent); // => A component
Для создания функции требуется [options]
. Затем эта функция принимает второй аргумент с именем WrappedComponent
.