redux 与此异步形实转换程序混淆

6yoyoihd  于 2023-03-30  发布在  其他
关注(0)|答案(1)|浏览(96)
export const loginSuccess = createAsyncThunk(
  "auth/loginSuccess",
  async (user: User) => {
    const res = await api
      .post(
        "/auth/loginSuccess",
        { user },
        {
          withCredentials: true,
        }
      )
      .then((res: any) => {
        setAxiosToken(res.data.token);
        saveToken(res.data.token);
        return { ...res.data.data, token: res.data.token };
      });

    return res;
  }
);

最后有两个return语句,所以我不知道实现的reducer会得到哪个返回值。代码是别人写的,这就是为什么我想理解它。

8wigbo56

8wigbo561#

第二个return语句将从函数返回。
第一个实际上是从axios返回的promise的then函数返回。
在thunk函数中对res变量和传递给then函数的response变量使用相同的名称,这会让人有点困惑。
但是你将收到的是在这行代码中生成的对象:

{ ...res.data.data, token: res.data.token }

其中res.data.data扩展到一个新对象中,并且res.data.token被赋给该对象的token属性。

相关问题