优化useUrlQueryCriteria

master
LiuJiaNan 2025-12-16 11:50:42 +08:00
parent 7bd721d10d
commit 5ea836071e
2 changed files with 17 additions and 11 deletions

View File

@ -1,12 +1,16 @@
import { tools } from "@cqsjjb/jjb-common-lib"; import useUrlState from "@ahooksjs/use-url-state";
import useGetUrlQuery from "../useGetUrlQuery";
const { query } = tools.router;
/** /**
* 处理搜索条件缓存到 URL * 处理搜索条件缓存到 URL
*/ */
export default function useUrlQueryCriteria() { export default function useUrlQueryCriteria() {
const [state, setState] = useUrlState({
searchFormKeys: "",
searchFormValues: "",
paginationKeys: "",
paginationValues: "",
}, { navigateMode: "replace" });
/** /**
* 将搜索表单项和分页参数缓存到 URL * 将搜索表单项和分页参数缓存到 URL
*/ */
@ -35,20 +39,21 @@ export default function useUrlQueryCriteria() {
const paginationData = getJoinString(pagination); const paginationData = getJoinString(pagination);
// 将数据存储到 URL 查询参数中 // 将数据存储到 URL 查询参数中
query.searchFormKeys = searchFormData.keys; setState({
query.searchFormValues = searchFormData.values; searchFormKeys: searchFormData.keys || undefined,
query.paginationKeys = paginationData.keys; searchFormValues: searchFormData.values || undefined,
query.paginationValues = paginationData.values; paginationKeys: paginationData.keys || undefined,
paginationValues: paginationData.values || undefined,
});
} }
/** /**
* URL 中获取缓存的查询参数 * URL 中获取缓存的查询参数
*/ */
function getUrlCriteriaQuery(keysStr, valuesStr) { function getUrlCriteriaQuery(keysStr, valuesStr) {
const query = useGetUrlQuery();
// 将键值字符串分割为数组 // 将键值字符串分割为数组
const keys = query[keysStr] ? query[keysStr].split(",") : []; const keys = state[keysStr] ? state[keysStr].split(",") : [];
const values = query[valuesStr] ? query[valuesStr].split(",") : []; const values = state[valuesStr] ? state[valuesStr].split(",") : [];
// 构建结果对象 // 构建结果对象
const resultMap = {}; const resultMap = {};

View File

@ -22,6 +22,7 @@
"postinstall": "echo 'Thanks for using our component library!'" "postinstall": "echo 'Thanks for using our component library!'"
}, },
"dependencies": { "dependencies": {
"@ahooksjs/use-url-state": "^3.5.1",
"@ant-design/icons": "^6.1.0", "@ant-design/icons": "^6.1.0",
"@ant-design/pro-components": "^2.8.10", "@ant-design/pro-components": "^2.8.10",
"@cqsjjb/jjb-common-lib": "latest", "@cqsjjb/jjb-common-lib": "latest",