createAsyncThunk如何不使用_、undefined等占位符跳过首个arg参数
关于跳过createAsyncThunk第一个参数的解决方案
首先明确:没有办法完全不使用任何占位符,直接访问第二个参数中的extra属性。
原因很简单:createAsyncThunk的payload创建函数参数顺序是固定的,第一个位置对应调用thunk时传入的入参,第二个位置才是包含extra、dispatch等属性的thunkAPI对象。JavaScript函数参数按位置匹配,不存在语法可以直接跳过前面的位置参数访问后续参数。
你示例代码中把undefined作为形参名的写法是错误的,undefined是JS保留关键字,不能作为参数名使用,代码运行会直接抛出语法错误。
以下是社区公认的规范替代写法:
- 使用单下划线
_作为占位符,这是JS生态默认的「该参数无需使用」的约定标识,可读性很高:
createAsyncThunk( 'module/fetchModule', async (_, { extra: api }) => { const { data } = await api.get('myendpoint'); const normalized = normalize(data, [myEntity]); return normalized.entities; } );
- 如果担心团队成员不理解
_的含义,可以使用语义化的占位符命名,明确标识该参数未被使用:
createAsyncThunk( 'module/fetchModule', async (unusedThunkArg, { extra: api }) => { const { data } = await api.get('myendpoint'); const normalized = normalize(data, [myEntity]); return normalized.entities; } );
- 如果项目开启了ESLint未使用参数校验或者使用TypeScript,可以给占位符加下划线前缀(比如
_arg),大多数校验工具会自动忽略这类命名的参数,不会抛出未使用警告。
内容的提问来源于stack exchange,提问作者Luis Cárcamo
相关产品推荐
相关产品推荐

