代码之家  ›  专栏  ›  技术社区  ›  dommer

为什么我的反应总是“成功”?

  •  0
  • dommer  · 技术社区  · 4 年前

    我尝试进行一个react查询变异(使用axios,但是如果切换到fetchapi,我会得到相同的行为)。

    我是这样安排的。

    const mutation = useMutation(
        () => {
          axios.post("http://swapi.dev/api/foobar", {});
        },
        {
          onSuccess: () => {
            console.log("success");
          },
          onError: () => {
            console.log("error");
          },
        }
      );
    

    我按如下方式激发突变。

    mutation.mutate();
    

    每次控制台显示“success”时。这个 onError 处理者从不开火。在Chrome的network选项卡中查看时,调用返回预期的错误(以及显示控制台错误)。

    有人能给我指出正确的方向吗?

    1 回复  |  直到 4 年前
        1
  •  1
  •   Dennis Martinez    4 年前

    useMutation 第一个参数需要一个返回承诺的函数。这就是所谓的突变函数。你不是在回报承诺,而是在回报虚无。您需要使用async/await或返回axios的承诺。

    const mutation = useMutation(
      () => {
        return axios.post('http://swapi.dev/api/foobar', {})
      },
      {
        onSuccess: () => {
          console.log('success')
        },
        onError: () => {
          console.log('error')
        }
      }
    )
    
    推荐文章