出于某种原因,文档没有提到这个 case .只知道如何
若要处理多个参数,请执行以下操作.
这是因为这与其说是Redux&;Redux-Toolkit的"事情",不如说是一件Java脚本的"事情".有相当多的假设认为开发人员熟悉这种语言.
Redux-工具包创建的动作102采用up to单个参数,例如动作有效载荷.在这方面,createAsyncThunk
个行动没有什么不同.向有效负载创建者传递两个参数,一个是作为操作有效负载的值,另一个是允许对存储实例和各种实用程序进行异步操作访问的thunkApi
.
如果您没有传递任何参数,并且不需要访问第二个arg中的thunkAPI
,则代码可能如下所示:
export const myAsyncAction = createAsyncThunk(
'async/myAsyncAction',
async () => {
...
return /* something */;
}
);
dispatch(myAsyncAction());
在Java脚本中,如果一个函数有多个参数,而这些参数不一定都需要有定义值,那么它们103仍然会在函数声明中声明.任何有效的Javascript identifier都可以在这里使用,但常见的做法是对这些未使用的函数参数/参数使用下划线"_"
字符.如果有多个未使用的参数,也可以将其与更具描述性的名称一起使用,例如"_unused_arg_1"
.换句话说,任何对你或你的团队有效的东西都是好的.如果您没有为有效负载传递一个值,那么您仍然需要声明一个标识符,以便您可以"跳过"它以转到您do需要访问的第二个参数.
export const myAsyncAction = createAsyncThunk(
'async/myAsyncAction',
async (_, thunkApi) => {
try {
// ... happy path logic
return data;
} catch (error) {
// ... sad path logic
return thunkApi.rejectWithValue(error);
}
}
);
dispatch(myAsyncAction());
仅供参考,如果您需要将more than 1参数传递给createAsyncThunk
操作,您可以将其打包到单个对象中作为有效负载的第一个参数.
示例:
export const myAsyncAction = createAsyncThunk(
'async/myAsyncAction',
async (arg, thunkApi) => {
const { foo, bar } = arg;
try {
// ... happy path logic
return data;
} catch (error) {
// ... sad path logic
return thunkApi.rejectWithValue(error);
}
}
);
dispatch(myAsyncAction({ foo: "foo", bar: "bar" }));