我有两个不同但相似的函数可以进行 api 调用。我想知道有没有办法让他们咖喱?
const getNameMatches = async partialName=> {
const { data: documents} = await axios.get(
`api/Documents/SearchDocument?searchString=${partialName}`,
);
const { data: clients } = await axios.get('api/Clients/GetAll');
return documents.map(document=> ({
label: document.Name,
subLabel: clients.find(c => c.id === document.clientID)?.firstName,
value: document,
}));
const getAddressMatches = async partialAddress=> {
const { data: documents} = await axios.get(
`api/Documents/SearchDocumentByAddress?searchString=${partialAddress}`,
);
const { data: clients } = await axios.get('api/Clients/GetAll');
return documents.map(document=> ({
label: document.propertyAddress,
subLabel: clients.find(c => c.id === document.clientID)?.firstName,
value: document,
}));
我将这两个函数组合成一个函数,但我想对它们进行柯里化并想知道这是否可能。
组合功能:
const getMatches = async (state, partialString) => {
const tabValue = state.tabValue;
const { data } = await axios.get(
`api/Documents/SearchDocument${
tabValue === 'Address' ? 'ByAddress' : ''
}?searchString=${partialString}`,
);
const { data: clients } = await axios.get('api/Clients/GetAll');
return data.map(loan => ({
label: tabValue === 'Name' ? document.name: document.propertyAddress,
subLabel: clients.find(c => c.id === loan.clientID)?.firstName,
value: document,
}));
};