【发布时间】:2021-08-13 07:53:41
【问题描述】:
我正在尝试以一种优雅的方式组合这两个功能。我已经通过使用 switch 语句和 const 变量来重复值来降低复杂度
此函数按给定的天、周或 2 周减去天的值
const handleLeft = (
active: any,
setActiveDate: any,
setParagonActiveDate: any
) => {
const time = (prevDay: any, length: number) =>
moment(prevDay)
.subtract(length, 'd')
.format('YYYY/MM/DD');
switch (active) {
case 'day':
setActiveDate((prevDay: any) => time(prevDay, 1));
setParagonActiveDate &&
setParagonActiveDate((prevDay: any) => time(prevDay, 1));
break;
case 'week':
setActiveDate((prevDay: any) => time(prevDay, 6));
setParagonActiveDate &&
setParagonActiveDate((prevDay: any) => time(prevDay, 6));
break;
case '2weeks':
setActiveDate((prevDay: any) => time(prevDay, 13));
setParagonActiveDate &&
setParagonActiveDate((prevDay: any) => time(prevDay, 13));
}
};
此函数按给定的天、周或 2 周添加天值
const handleRight = (
active: any,
setActiveDate: any,
setParagonActiveDate?: any
) => {
const time = (prevDay: any, length: number) =>
moment(prevDay)
.add(length, 'd')
.format('YYYY/MM/DD');
switch (active) {
case 'day':
setActiveDate((prevDay: any) => time(prevDay, 1));
setParagonActiveDate &&
setParagonActiveDate((prevDay: any) => time(prevDay, 1));
break;
case 'week':
setActiveDate((prevDay: any) => time(prevDay, 6));
setParagonActiveDate &&
setParagonActiveDate((prevDay: any) => time(prevDay, 6));
break;
case '2weeks':
setActiveDate((prevDay: any) => time(prevDay, 13));
setParagonActiveDate &&
setParagonActiveDate((prevDay: any) => time(prevDay, 13));
}
};
【问题讨论】:
标签: javascript reactjs functional-programming func reusability