无法在useEditProject里使用useSearchParams,否则一进入编辑modal过一会就报如下错
来源:11-7 抽象乐观更新通用hook

cylqd
2021-03-20
export const useUrlQueryParam = <K extends string>(keys: K[]) => {
const [searchParams] = useSearchParams();
const setSearchParams = useSetUrlSearchParam();
const [stateKeys] = useState(keys);
return [
useMemo(
() =>
subset(Object.fromEntries(searchParams), stateKeys) as {
[key in K]: string;
},
[searchParams, stateKeys]
),
(params: Partial<{ [key in K]: unknown }>) => {
return setSearchParams(params);
// iterator
// iterator: https://codesandbox.io/s/upbeat-wood-bum3j?file=/src/index.js
},
] as const;
};
export const useSetUrlSearchParam = () => {
const [searchParams, setSearchParam] = useSearchParams();
return (params: { [key in string]: unknown }) => {
const o = cleanObject({
...Object.fromEntries(searchParams),
...params,
}) as URLSearchParamsInit;
return setSearchParam(o);
};
};
export const useProjectsSearchParams = () => {
const [param, setParam] = useUrlQueryParam(["name"]);
return [
useMemo(
() => ({ ...param}),
[param]
),
setParam,
] as const;
};
export const useEditProject = () => {
const client = useHttp();
const queryClient = useQueryClient();
const [searchParams] = useProjectsSearchParams()
console.log(searchParams)
//const queryKey = ['projects', searchParams]
const result = useMutation((params: Partial<Project>) => client(`projects/${params.id}`, {
data: params,
method: 'PATCH'
}), {
onSuccess: () => queryClient.invalidateQueries('projects'),
// async onMutate(target) {
// const previousItems = queryClient.getQueryData(queryKey)
// queryClient.setQueryData(queryKey, (old?: Project[]) => {
// return old?.map(project => project.id === target.id ? {...project, ...target} : project) || []
// })
// return {previousItems}
// },
// onError(error, newItem, context) {
// queryClient.setQueryData(queryKey, (context as { previousItems: Project[] }).previousItems)
// }
})
return result
}
写回答
2回答
-
瘸腿猫Vivian
2022-09-07
我也是 请问同学解决了吗
012022-09-07 -
Nolan
2021-04-22
对比一下源代码吧,看看有什么不一样
00
相似问题