首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

'AsyncThunkAction‘Redux-toolkit类型上不存在属性'then’

AsyncThunkAction是Redux Toolkit中的一个类型,它用于定义异步的thunk action。Thunk action是一种特殊的action creator,它返回一个函数而不是一个普通的action对象。而AsyncThunkAction则是在thunk action中处理异步逻辑时使用的类型。

在Redux Toolkit中,我们可以使用createAsyncThunk函数来创建AsyncThunkAction。createAsyncThunk接受两个参数:一个字符串类型的action类型,和一个异步的回调函数。回调函数可以是一个异步操作,例如发送网络请求或者执行数据库查询等。

AsyncThunkAction的属性'then'不存在,因为它不是一个Promise对象。相反,它是一个包含了异步操作状态的action对象。这个action对象包含了三个属性:pending、fulfilled和rejected。当异步操作开始时,会先派发一个pending状态的action,表示异步操作正在进行中。当异步操作成功完成时,会派发一个fulfilled状态的action,携带着异步操作的结果数据。而当异步操作失败时,会派发一个rejected状态的action,携带着错误信息。

在Redux Toolkit中,我们可以使用createSlice函数来创建一个包含了AsyncThunkAction的slice。createSlice函数会自动为我们生成对应的reducer和action creators,简化了Redux的使用流程。

关于AsyncThunkAction的更多信息,你可以参考腾讯云的相关文档:

请注意,以上答案仅供参考,具体的实现方式可能会根据具体的项目需求和技术栈而有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

redux redux-toolkit 与 rematch 对比总结

状态管理: redux-toolkit 如何使用 # React/ReactNative 状态管理: rematch 如何使用 这篇文章里,我们来站在更高的角度对比总结一下。...本文主要内容: 什么是状态管理 有哪些方案,优缺点和使用场景 Redux React-Redux Redux-Toolkit 和 Rematch 的区别 什么是状态管理 状态(State),就是影响 UI...其中最重要的两个工具函数是: configureStore:管理所有全局状态的函数,它的返回值是一个 Store 对象; createSlice:管理分片全局状态的函数,其返回值是一个分片对象,该对象最重要的两个属性是...它和 redux-toolkit 非常相似,它的 model 基本可以等同于 redux-toolkit 的 slice: 不同点在于,rematch 支持多个 store。...Redux Toolkit 实际是 Redux 应用的官方套件,它提供了一些有用的工具来帮助简化 Redux 应用程序中的常见任务,例如简化构建 store 的方式、处理异步请求、处理原生的 action

2K60

redux 文档到底说了什么(下)

一篇文章主要介绍了 redux 文档里所用到的基本优化方案,但是很多都是手工实现的,不够自动化。这篇文章主要讲的是怎么用 redux-toolkit 组织 redux 代码。...这里主要因为不 toString() 会报 TS 类型错误,官方的推荐写法是这样的: // todos/slice.ts const todosSlice = createSlice({ name:...removeOne 等等的方法,这些 API 用起来就和用 Sequlize 这个库来操作数据库没什么区别,不足的地方是 payload 一定要按照它规定的格式,如 updateOne 的 payload 类型就得这样的...不过 redux-toolkit 提供了一个 createSelector,那还用个屁的 Reselect。...总结 到这里会发现真正我们用到的东西就是 redux + react-redux + redux-toolkit 就可以写一个最佳实践出来了。

75820

用 Redux 做状态管理,真的很简单🦆!

*7777, history: [1,2,3,4,5] } } 由于 JS 的动态性,使得对象是可以修改的,Redux 想要记录每一个状态,如果直接修改 state 中的引用类型属性.../src/store 下的文件结构如下: . ├── index.ts // store 实例,导出 state 和 dispatch 类型 └── reducers // 集合所有的 reducer..."; // 在 store/index.ts 中声明的类型 // 借助 createSlice 创建 reducer、action const CounterSlice = createSlice({...简单总结一下: 推荐在 React 项目中使用 Redux 作为状态管理 需要掌握 Redux 中的设计思想 推荐使用 @redux-toolkit,可降低心智负担,显著提升研发效率 当掌握 @redux-toolkit...后,可补充阅读 Redux 原本的 API,思考一下为什么 @redux-toolkit 要这么做?

3.4K40

Redux介绍及源码解析

同时 Redux 利用纯函数简单明了的特点, 在 Flux 架构的基础上进行了优化和功能增强 (支持中间件、异步等), 降低了复杂度, 同时还提供强大的工具库支持 (React-Redux、Redux-Toolkit...所以读起来要比 Flux 的源码轻松很多, 逻辑走向比较清晰, 可以学习学习其编程思维, 他导出的函数有如下几个:export { createStore, // 整体的Store创建函数, 不过现在推荐使用redux-toolkit...PROBE_UNKNOWN_ACTION${randomString()}`,}2、createStore代码中引用的 store 就是通过该函数创建了, 是 Redux 中的核心函数, 函数中对主要的功能函数进行的定义, 并对一些属性进行初始化...的实现逻辑, 即接收不同的 reducers, 返回一个总体控制的 combination 函数, 该函数中会轮训 reducers 的所有属性, 分别触发他们的 reducer 函数, 下面来看一下他的具体源码实现...当然, 现在官方已经开始推荐使用 redux-toolkit, 他是基于 Redux 的最佳实践, 简化了 Redux 的编写调用, 他采用了函数式、柯里化等编程思维, 具体差异可以参考官方说明.

2.5K20

redux 文档到底说了什么(

,很多时候突然就冒出一个概念或者方法,而且总是将 redux,react-redux 和 redux-toolkit 这三个玩意混在一起讲,搞得看的人是一脸蒙逼。...但是,如果你在 TypeScript 里这么写是一定会报错的,主要是你没有定义好 handlerMapper 的类型,也没有定义 action 的类型。因此我们还要做类型的定义。...handler(todos, action) : todos } 第六版:使用 immer 来优化 reducer 现在把目光放在 todosReducer ,我们发现每次返回 state 都要用扩展运算符来返回...**要做这种改动其实花费力气不小,因为 reducer.ts 的所有逻辑都要改,类型也要改。啊啊啊啊,好烦。...下一篇文章将会说怎么将上面的代码都换成 redux-toolkit 的推荐的写法,这个过程将会很爽,那下一篇文章见~

2K20

TypeScript遭库开发者嫌弃:类型简直是万恶之源

从本质讲,TypeScript 就是把复杂性从端开发者那转移给了库开发者,最终显著增加了库开发流程侧的工作负担。...太过复杂 我跟 redux 打过不少交道,redux-toolkit 确实是个很棒的库,开发者可以用它查看实际代码库中的类型是如何正确完成的。...但在 TypeScript 中,嵌套三元组成了根据其他类型缩减类型范围的唯一方法。...是不是闹呢…… 测    试 因为可以从其他类型生成类型,而且各类型都有很高的动态特性,所以任何生产级别的 TypeScript 项目都得经历专门的一类测试:类型测试。...我就帮忙维护过 redux-saga,项目近期发布的 PR 和 issue 主要就集中在类型身上。 我发现相较于编写库代码,我花在类型调整的时间要多得多。

68310

对于“前端状态”相关问题,如何思考比较全面

在这个回答的基础,我想引申出一个问题 —— 对于「前端状态」相关问题,如何思考比较全面? 今天,我们试着从多个抽象层级的角度回答这个问题。...框架们根据自身特点,在「类面向对象编程」的组件实现,拓展了复用性: React通过HOC、renderProps Vue2通过mixin 经过长期实践,框架们逐渐发现 —— 「类面向对象编程的组件实现...」中「封装」带来的好处不足以抵消「复用性」的劣势。...」还是「不可变类型状态」的Model,都带来了「从组件中抽离逻辑」的能力,对于上例来说: 「可变类型状态」将状态与逻辑抽离到User中 「不可变类型状态」将状态与逻辑抽离到userModel与userReducer...此时框架实现原理对Model的影响已经在更高的抽象中被抹去了,比如Redux-toolkit是React技术栈的解决方案,Vuex是Vue技术栈的解决方案,但他们在使用方式是类似的。

58330

深入探讨 Undefined

要回答这些问题,首先让我们来看看究竟什么是undefined…… undefined概述 变量的值被赋予一个类型,JavaScript中有几个内置的本地类型: Undefined Null Boolean...很多人对此都感到困惑,实际很简单。 null和undefined之间唯一真正的关系是:它们在类型强制过程中都判断为false。...访问对象的属性 当您尝试使用对象上一个不存在属性时,也会得到undefined,如果您把不存在属性作为函数使用有时会引发错误。 ?...如果您想分辨“有未定义值的属性”和“根本不存在属性”这两者,应该怎么做呢? 使用typeof或者 ===都会给你一个undefined的值。 使用in运算符能够检查对象中是否存在某个属性: ?...检查对象属性是否存在,无论是否已经为它分配了值: ? 检查对象是否存在属性,并且属性具有值集(真值或假) ?

83730

聊聊两个状态管理库 Redux & Recoil

我简单整理了一些目前主流的: Redux React Context & useReducer Mobx Recoil react-sweet-state hox 这几个都是我接触过的,Npm 的现状和趋势对比...default: { return state; } } }; export default reducer; 使用 createSlice: // src/redux-toolkit...属性要一个一个 pick,计算属性要依赖 reselect。还有魔法字符串等一系列问题,用起来很麻烦容易出错,开发效率低。 触发更新的效率也比较差。...Recoil Recoil.js 提供了另外一种思路, 它的模型是这样的: 在 React tree 创建另一个正交的 tree,把每片 item 的 state 抽出来。...不过我认为,这是一种模式的改变,recoil 鼓励把每一个状态做的足够小, 任意组合,最小范围的更新。

3.4K10

python 面向对象基础 获取对象信息

换句话说,isinstance()判断的是一个对象是否是该类型本身,或者位于该类型的父继承链。...在Python中,如果你调用len()函数试图获取一个对象的长度,实际,在len()函数内部,它自动去调用该对象的__len__()方法,所以,下面的代码是等价的: >>> len('ABC') 3...True >>> getattr(obj, 'y') # 获取属性'y' 19 >>> obj.y # 获取属性'y' 19 如果试图获取不存在属性,会抛出AttributeError的错误: >>>...AttributeError: 'MyObject' object has no attribute 'z' 可以传入一个default参数,如果属性不存在,就返回默认值: >>> getattr(obj..., 'z', 404) # 获取属性'z',如果不存在,返回默认值404 404 也可以获得对象的方法: >>> hasattr(obj, 'power') # 有属性'power'吗?

75010

获取对象信息

,或者位于该类型的父继承链   要优先使用isinstance()判断类型,这样可将指定类型及其子类"一网打尽" #继承关系是:object -> Animal -> Dog -> Husky..."对象.属性或方法"的方式会报错 setattr():给对象设置某属性或方法,并赋值   只有在不知道对象信息的时候,才会去获取对象信息,如果可以通过"对象.属性",就不要通过 getattr()方式获取属性值...  假设希望从文件流fp中读取图像,首先要判断该fp对象是否存在read方法   如果存在,则该对象是一个流,如果不存在,则无法读取,可通过hasattr()判断   请注意,在Python这类动态语言中...(obj.y) #输出:19 getattr(obj, 'z') #输出:报错,如果试图获取不存在属性,会抛出AttributeError的错误,对象obj没有属性'z'...getattr(obj, 'z', 404) #输出:404,可以传入一个default参数,如果属性不存在,就返回默认值,获取属性'z',如果不存在,返回默认值404 hasattr

1.8K50

@Autowired和@Resource的使用

@Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。...都可以写在字段,或写在setter方法。...,如果没有指定name属性,当注解写在字段时,默认取字段名进行安装名称查找,如果注解写在setter方法默认取属性名进行装配。...当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。...如果当Spring上下文中存在不止一个UserDao类型的bean时,就会抛出BeanCreationException异常;如果Spring上下文中不存在UserDao类型的bean,也会抛出BeanCreationException

35710

Python里最神秘的一个魔法函数

原因是 defaultdict 在继承了内置类型 dict 之后,还定义了一个 __missing__() 方法,当 __getitem__取不存在的值时,它就会调用入参中传入的工厂函数(上例是调用 list...这是因为它并非内置类型的必要属性,并没有在字典基类中被预先定义。...如果你直接从 dict 类型中取该属性值,会报属性不存在:AttributeError: type object 'object' has no attribute '__missing__'。...使用 dir() 查看,发现确实不存在属性: 如果从 dict 的父类即 object 中查看,也会发现同样的结果。 这是怎么回事呢?...我在交流群里说出了这个猜想,有同学很快就在 CPython 源码中找到验证: 而这就有意思了,在内置类型的子类才存在的魔术方法,纵观整个 Python 世界,恐怕再难以找出第二例。

44050
领券