我有三个函数,我想用curry重构,但我很难搞懂返回函数的函数。我正试图分解和设计curry函数作为出发点。
我找到了这个 媒介文章 这给了一个非常简单的设计。
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
凑齐猫种catBreeds
到 getPriorityBreed
breed
和a 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);
// ...
}
我的问题是:
希望得到任何帮助:)
我想让钩子不知道 CAT_DEFS
并将其直接传递给 getCatHelper
.
我做了这个工作。
export function getCatHelper {
return (
prioritisedBreeds,
catDefintions,
debugToggle,
getDataLayer = getDataFromRequest
) {
// ...
};
}
function useCatHook(
config,
getCat (
prioritisedBreeds,
catDefintions,
debugToggle
) = getCatHelper(CAT_DEFS),
debugToggle
) {
// ...
}