react.query怎么在onSuccess中获取请求参数?

 queryClient.setQueryDefaults('list', {
    queryFn: async ({ queryKey }) => {
      const [, page, pageSize] = queryKey as ListQueryKey;
      return await getSomeThing({ page, size: pageSize});
    },
    onSuccess: (data, variables, context) => {
      const previousData = queryClient.getQueryData('list'); // 获取之前的数据
      const page = variables[1]; // 从查询键中获取 page 参数

      // 判断 page 是否等于 1,如果是,则替换之前的数据,否则合并新数据
      if (page === 1) {
        queryClient.setQueryData('list', data); // 替换之前的数据
      } else if (previousData) {
        // 合并新数据到之前的数据中
        queryClient.setQueryData('list', [...previousData, ...data]);
      }
    },
  });

上面的代码中,我需要在onSuccess中获取page的值,但是onSuccess的参数只有data,没有variables,react-query的版本是3.29,请问怎么解决。

阅读 865
1 个回答
queryClient.setQueryDefaults('list', {
  queryFn: async ({ queryKey }) => {
    const [, page, pageSize] = queryKey as ListQueryKey;
    const data = await getSomeThing({ page, size: pageSize});
    return { data, page }; // 把 page 参数和数据一起返回
  },
  onSuccess: (data, variables, context) => {
    const previousData = queryClient.getQueryData('list'); // 获取之前的数据
    const page = context.page; // 从 context 中获取 page 参数

    // 判断 page 是否等于 1,如果是,则替换之前的数据,否则合并新数据
    if (page === 1) {
      queryClient.setQueryData('list', data.data); // 替换之前的数据
    } else if (previousData) {
      // 合并新数据到之前的数据中
      queryClient.setQueryData('list', [...previousData, ...data.data]);
    }
  },
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏