为什么 useMutation 不返回 promise?

Why doesn't useMutation return a promise?

提问人:Nikon George 提问时间:9/18/2023 更新时间:9/18/2023 访问量:103

问:

我的 axios 实例只返回一个 promise:

export const add_order = (data) => instance.post(`/Order/addItem`, { ...data });

我的突变:

const { mutate } = useMutation(add_order);

所以我现在的问题是:

  • 为什么我不能使用 mutate 来等待结果?看起来 useMutation 只使用回调,实际上并没有返回 promise......

Eaxmple:

  const myPostFunction = async () => {
  try {
    const result = await mutate(itemsForOrder)
    console.log(result)
  } catch (error) {
    console.error(error);
  }
};

我只是不能在突变上使用 await... 我的 VSC 说不能在这种表达式上使用 await,这是真的,我没有记录任何控制台,就像没有等待结果一样

有什么见解吗?

reactjs 异步等待 es6-promise react-query tanstackreact-query

评论

0赞 njzk2 9/18/2023
用?mutateAsync

答:

3赞 Axnyff 9/18/2023 #1

如果你确实想等待 mutate,有一个异步版本的 mutate:你可以使用

const { mutateAsync } = useMutation(...)

文档在这里

评论

0赞 Nikon George 9/18/2023
哇,我怎么错过了。是的,你是完全正确的,谢谢!
0赞 Nikon George 9/18/2023
顺便说一句,mutateAsync 可以有 onSuccess 和其他回调吗?
0赞 Axnyff 9/19/2023
是的,看起来您也可以提供这些作为第二个参数