优化前
export const setUrl = (
pathname: string,
urlSort: string,
urlKeywords: string,
page: number,
pageSize: number,
keywords?: string,
sort?: string,
) => {
let url: string;
if (sort && setSortParam(sort) === urlSort) {
urlKeywords === '{}'
? (url =
pathname +
'?page=' +
page +
'&pagesize=' +
pageSize +
'&sort=' +
setSortParam(sort))
: (url =
pathname +
'?page=' +
page +
'&pagesize=' +
pageSize +
'&filter=' +
urlKeywords +
'&sort=' +
setSortParam(sort));
} else if (sort && setSortParam(sort) !== urlSort) {
urlKeywords === '{}'
? (url = pathname + '?page=1&pagesize=' + pageSize + '&sort=' + setSortParam(sort))
: (url =
pathname +
'?page=1&pagesize=' +
pageSize +
'&filter=' +
urlKeywords +
'&sort=' +
setSortParam(sort));
} else if (!sort && keywords) {
url =
pathname +
'?page=' +
page +
'&pagesize=' +
pageSize +
'&filter=' +
keywords +
'&sort=' +
urlSort;
} else {
url = pathname + '?page=' + page + '&pagesize=' + pageSize +
'&sort=' + urlSort;
}
return url;
};
history.push(
setUrl(
location.pathname,
urlSort,
filter,
page,
pageSize,
'{}',
sortParam,
),
);
history.push(
setUrl(
location.pathname,
urlSort,
urlKeywords,
1,
pageSize,
JSON.stringify(keywordsObj),
),
);
优化后
type HandleChangeOptions = {
pathname: string;
page: number;
pageSize: number;
urlFilters: string;
oldSort: string;
newSort: string;
};
type HandleSearchOptions = {
pathname: string;
pageSize: number;
filters: string;
sort: string;
};
export const setHandleChangeUrl = (args: HandleChangeOptions) => {
let url: string;
if (args.newSort && setSortParam(args.newSort) === args.oldSort) {
args.urlFilters === '{}'
? (url =
args.pathname +
'?page=' +
args.page +
'&pagesize=' +
args.pageSize +
'&sort=' +
args.oldSort)
: (url =
args.pathname +
'?page=' +
args.page +
'&pagesize=' +
args.pageSize +
'&filter=' +
args.urlFilters +
'&sort=' +
args.oldSort);
} else {
args.urlFilters === '{}'
? (url =
args.pathname +
'?page=1&pagesize=' +
args.pageSize +
'&sort=' +
setSortParam(args.newSort))
: (url =
args.pathname +
'?page=1&pagesize=' +
args.pageSize +
'&filter=' +
args.urlFilters +
'&sort=' +
setSortParam(args.newSort));
}
return url;
};
export const setHandleSearchUrl = (args: HandleSearchOptions) => {
let url: string;
const filterObj = JSON.parse(args.filters);
Object.keys(filterObj).map((item) => {
if (!filterObj[item]) {
delete filterObj[item];
}
return true;
});
if (filterObj['status'] && filterObj['status'][0] === 'all') {
delete filterObj['status'];
}
if (filterObj['roleId'] && filterObj['roleId'] === 'all') {
delete filterObj['roleId'];
}
const filterStr = JSON.stringify(filterObj);
filterStr === '{}'
? (url = args.pathname + '?page=1&pagesize=' + args.pageSize + '&sort=' + args.sort)
: (url =
args.pathname +
'?page=1&pagesize=' +
args.pageSize +
'&filter=' +
filterStr +
'&sort=' +
args.sort);
return url;
};
history.push(
setHandleChangeUrl({
pathname: location.pathname,
page: page,
pageSize: pageSize,
urlFilters: filter,
oldSort: urlSort,
newSort: sort,
}),
);
history.push(
setHandleSearchUrl({
pathname: location.pathname,
pageSize: urlPageSize,
filters: JSON.stringify(filtersObj),
sort: urlSort,
}),
);
小结