如果你看一下指南,useButation-Hook参数的 struct 是这样的.

const {
  data,
  error,
  isError,
  isIdle,
  isLoading,
  isPaused,
  isSuccess,
  mutate,
  mutateAsync,
  reset,
  status,
} = useMutation(mutationFn, {
  cacheTime,
  mutationKey,
  networkMode,
  onError,
  onMutate,
  onSettled,
  onSuccess,
  retry,
  retryDelay,
  useErrorBoundary,
  meta
})

异步axios函数的 struct 如下:

async function setSupplierRegister(
  basic: Basic,
  operator: Operator,
  delivery: Delivery,
  bank: Bank
): Promise<void> {
  await axiosInstance.post("/register", {
    basic: basic,
    operator: operator,
    delivery: delivery,
    bank: bank,
  });
}

异步函数需要4个参数,但在useButation钩子参数中只能检索到1个数据值.


export function useRegister(): UseMutateFunction<
    void,
    unknown,
    any,
    unknown
> {
  const { mutate } = useMutation(
// (basic: Basic, operator: Operator, delivery: Delivery, bank: Bank) => setSupplierRegister(basic, operator, delivery, bank), error 
    (data: any) => setSupplierRegister(data),
  );
  return mutate;
}

我应该如何处理它以在useMutation函数中声明4个参数?

推荐答案

您可以在数组中添加参数,例如:

export function useRegister(): UseMutateFunction<
    void,
    unknown,
    any,
    unknown
> {
  const { mutate } = useMutation(
// (basic: Basic, operator: Operator, delivery: Delivery, bank: Bank) => setSupplierRegister(basic, operator, delivery, bank), error 
    ([basic: Basic, operator: Operator, delivery: Delivery, bank: Bank]) => setSupplierRegister(basic, operator, delivery, bank),
  );
  return mutate;
}

然后调用mutate:

mutate([basic, operator, delivery, bank])

第二种 Select 是使用对象,但需要重构setSupplierRegister函数:

async function setSupplierRegister(data): Promise<void> {
  await axiosInstance.post("/register", {
    data
  });
}

你可以保持useMutation不变,你可以这样称呼变异:

mutate({ basic, operator, delivery, bank })

在我看来,第二种方法更简洁易读.

Javascript相关问答推荐

我应该绑定不影响状态的函数吗?'

从WooCommerce Checkout Country字段重新排序国家,保持国家同步

加载背景图像时同步旋转不显示的问题

我正在建立一个基于文本的游戏在react ,我是从JS转换.我怎样才能使变量变呢?

未定义引用错误:未定义&Quot;而不是&Quot;ReferenceError:在初始化&Quot;之前无法访问';a';

这个值总是返回未定义的-Reaction

如何在文本字段中输入变量?

使用Google API无法进行Web抓取

对路由DOM嵌套路由作出react

Jest toHaveBeenNthCalledWith返回当前设置的变量值,而不是调用时的值

如何 for each 输入动态设置输入变更值

在FAQ Accodion应用程序中使用React useState时出现问题

Vaadin定制组件-保持对javascrip变量的访问

使用父标签中的Find函数查找元素

用于部分字符串的JavaScript数组搜索

更改agGRID/Reaction中的单元格格式

有没有办法更改Chart.js 3.x.x中主要刻度的字体?

如何在函数组件中保留对计时器的引用

2.0.0-dev quill拖动文本不起作用如何使其拖动文本

如何使用属性访问器定义循环的for...的局部变量