У меня есть три функции, которые я хотел бы реорганизовать с помощью карри, но я изо всех сил пытаюсь разобраться с функциями, которые возвращают функции. Я пытаюсь разбить и спроектировать функции карри в качестве отправной точки.
Я нашел эту среднюю статью , которая дает очень простой дизайн.
function discount(discount) {
return (price) => {
return price * discount;
}
}
const tenPercentDiscount = discount(0.1);
tenPercentDiscount(500);
В на высоком уровне мои функции вызываются так:
getCatHelper(prioritisedBreeds, catDefintions, debugToggle)
.then((breed) => setConfigData(breed, config))
.catch(() => false);
- , если:
debugToggle
- он передает его mapCatValueToKey
, чтобы получить породу кошки - else: делает сетевой запрос, передает массив от
catBreeds
до getPriorityBreed
- устанавливает некоторые данные с возвращенными
breed
и config
в области действия
getPriorityBreed(prioritisedBreeds, catBreeds, catDefintions)
- вызывает
mapCatValueToKey
для отображения на catBreeds
и создания нового массива с петлями catDefintions
- по двум спискам -
prioritisedBreeds
и mappedCats
сверху, чтобы вернуть приоритет breed
mapCatValueToKey(breed, catDefintions)
- функция отображения для сопоставления породы (значения) с объектом определения кошки
Вот как вызывается getCatHelper
:
function useCatHook(
config: Config,
catDefintions: any = CAT_DEFS,
getCat: (
prioritisedBreeds,
catDefintions,
debugToggle,
) = getCatHelper,
debugToggle,
): any {
const [data, setData] = useState(undefined);
const prioritisedBreeds = Object.keys(config);
// ...
getCatHelper(prioritisedBreeds, catDefintions, debugToggle)
.then(breed => setData(breed))
.catch(() => false);
// ...
}
Мои вопросы:
- Как мне сконструировать это?
- Должен ли я заботиться о внутренних органах или просто спроектировать функцию и т. Функция, которую он возвращает?
- При рефакторинге, должен ли я сначала работать с внешней или внутренней функцией?
Буду признателен за любую помощь:)