小编web*_*ber的帖子

如何在 React-query 中使用惰性查询?

我正在使用 React-query 进行 API 调用。我想知道是否有一种方法可以以惰性方式调用查询。

意味着仅当查询参数更改时才调用查询。

这就是我目前所拥有的;我正在使用一个 hack,其中useEffectifrecipeName更改,然后运行该refetch函数。

export const searchRecipeByName = async (recipeName: string) => {
  return await api.get(
    `/recipes/complexSearch?apiKey=${process.env.NEXT_PUBLIC_SPOONACULAR_API_KEY}&query=${recipeName}&addRecipeInformation=true&fillIngredients=true`
  );
};
Run Code Online (Sandbox Code Playgroud)
  const [recipeName, setRecipeName] = useState("");

  const { data, refetch } = useQuery(
    "homePageSearchQuery",
    () => searchRecipeByName(recipeName),
    { enabled: false }
  );

// HACK
  useEffect(() => {
    if (!!recipeName) {
      refetch();
    }
  }, [recipeName]);

  const handleOnSearchSubmit = async (recipeSearch: RecipeSearch) => {
    setRecipeName(recipeSearch.search);
  };
Run Code Online (Sandbox Code Playgroud)

最好,我想在函数中调用查询handleOnSearchSubmit

我可以创建一个自定义useLazyQuery钩子来处理这个问题,但我想知道 React-query 是否有本地方法来处理这个问题。

javascript reactjs react-query

15
推荐指数
1
解决办法
2万
查看次数

如何在故事书中从 tanstack/react-query 设置 QueryClientProvider

在故事书中,我收到以下错误:No QueryClient set, use QueryClientProvider to set one

在此输入图像描述

在我的 _app.tsx 中:

const queryClient = new QueryClient();

const MyApp = ({ Component, pageProps }: AppProps) => {
  return (
    <QueryClientProvider client={queryClient}>
      <Component {...pageProps} />
    </QueryClientProvider>
  );
};
Run Code Online (Sandbox Code Playgroud)

我尝试将故事包装在 QueryClientProvider 中:

// method 1
export default {
  ...
  decorators: [
    (Story) => {
      const queryClient = new QueryClient();
      return (
        <QueryClientProvider client={queryClient}>
          <Story />
        </QueryClientProvider>
      );
    },
  ],
} as Meta;

// method 2
export const Complete = () => { …
Run Code Online (Sandbox Code Playgroud)

reactjs next.js storybook react-query

6
推荐指数
2
解决办法
4207
查看次数

使用 Typescript 设置 ContextApi 和 useReducer 时出现“没有重载匹配此调用”错误

我试图用打字稿设置 ContextApi 和 useReducer。在 useReducer 中的“issuesInitialState”变量上,出现错误:

没有重载匹配这个调用。Overload 1 of 5, '(reducer: ({ state, action }: IssueReducer) => {}, initializerArg: never, initializer?: undefined): [never, DispatchWithoutAction]',给出了以下错误。“IssuesInitialState”类型的参数不可分配给“never”类型的参数。Overload 2 of 5, '(reducer: ({ state, action }: IssueReducer) => {}, initialState: never, initializer?: undefined): [never, Dispatch]',给出了以下错误。“IssuesInitialState”类型的参数不可分配给“never”类型的参数。ts(2769)

// Store.tsx
type Issue = {
  closeDate: string | null;
  description: string;
  issueId: number;
  lastEditDate: string | null;
  priorityId: string;
  projectId: number;
  reportDate: string;
  statusId: string;
  title: string;
  userId: number;
};

interface IssuesInitialState {
  issues: Issue[];
  issue: Issue;
  issuesByProject: …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs context-api

5
推荐指数
2
解决办法
4544
查看次数

如何使用类验证器验证日期数组?

我想验证发布请求正文中的日期数组:

{
    "meals": [...],
    "dates": [
        "2022-03-06T11:00:00.000Z",
        "2022-03-07T11:00:00.000Z"
    ]
}
Run Code Online (Sandbox Code Playgroud)

这是我的 dto 课程:

export class CopyMealsPlanDto {
...// Another array

  @IsArray()
  @ValidateNested({ each: true })
  @IsDate()
  @Type(() => Date)
  dates: Date[];
}

Run Code Online (Sandbox Code Playgroud)

但我收到这个错误:

{
    "statusCode": 400,
    "message": [
        "dates must be a Date instance"
    ],
    "error": "Bad Request"
}
Run Code Online (Sandbox Code Playgroud)

api class-validator nestjs

5
推荐指数
2
解决办法
2万
查看次数