使用createAsyncThunk时如何传递参数?

发布于 2025-01-15 13:42:59 字数 2018 浏览 2 评论 0原文

检查了这一点,但传递一个参数并破坏没有帮助。

如何在 redux 工具包中将参数传递给 createAsyncThunk?< /a>

有这个:

export const login = createAsyncThunk("users/login", async (user, params) => {
  const { name, data } = params;
  const { userContext } = await axios({
    method: "post",
    url: `loginEmail`,
    data: data,
    headers: {
      "Content-Type": "application/json",
    },
  });
  return userContext;
});

并收到此错误:

ERROR in src/components/CreatePost.tsx:142:25

TS2554: Expected 0 arguments, but got 1.
    140 |               onClick={() => {
    141 |                 dispatch(
  > 142 |                   login({
        |                         ^
  > 143 |                     email: "j",
        | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  > 144 |                     password: "S",
        | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  > 145 |                   })
        | ^^^^^^^^^^^^^^^^^^^^
    146 |                 );
    147 |               }}

调用时:

dispatch(
  login({
    email: "janoech",
    password: "xxx",
  }))

在此处导入:

import { login } from "../slices/User";

和切片:

const userSlice = createSlice({
  name: "user",
  initialState: {
    userContext: null,
  },
  reducers: {},
  extraReducers: (builder) => {
    builder.addCase(getUser.fulfilled, (state, payload) => {
      state.userContext = payload;
    });
    builder.addCase(logout.fulfilled, (state, payload) => {
      state.userContext = null;
    });
    builder.addCase(login.fulfilled, (state, { payload }) => {
      state.userContext = payload;
    });
  },
});

export default userSlice.reducer;

Checked this, but pass one argument and destructing did not help.

How do you pass arguments to createAsyncThunk in redux toolkit?

Have this:

export const login = createAsyncThunk("users/login", async (user, params) => {
  const { name, data } = params;
  const { userContext } = await axios({
    method: "post",
    url: `loginEmail`,
    data: data,
    headers: {
      "Content-Type": "application/json",
    },
  });
  return userContext;
});

and got this error:

ERROR in src/components/CreatePost.tsx:142:25

TS2554: Expected 0 arguments, but got 1.
    140 |               onClick={() => {
    141 |                 dispatch(
  > 142 |                   login({
        |                         ^
  > 143 |                     email: "j",
        | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  > 144 |                     password: "S",
        | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  > 145 |                   })
        | ^^^^^^^^^^^^^^^^^^^^
    146 |                 );
    147 |               }}

When calling:

dispatch(
  login({
    email: "janoech",
    password: "xxx",
  }))

importing here:

import { login } from "../slices/User";

and the slice:

const userSlice = createSlice({
  name: "user",
  initialState: {
    userContext: null,
  },
  reducers: {},
  extraReducers: (builder) => {
    builder.addCase(getUser.fulfilled, (state, payload) => {
      state.userContext = payload;
    });
    builder.addCase(logout.fulfilled, (state, payload) => {
      state.userContext = null;
    });
    builder.addCase(login.fulfilled, (state, { payload }) => {
      state.userContext = payload;
    });
  },
});

export default userSlice.reducer;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文