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

Redux:未调用异步操作创建器

Redux 是一个用于 JavaScript 应用的状态管理库,它通常与 React 一起使用,但也可以与其他框架或库一起使用。Redux 的核心概念是将应用的状态存储在一个对象树中,并通过派发(dispatch)动作(actions)来改变这个状态。

基础概念

动作(Actions):是描述发生了什么的对象。它们是纯 JavaScript 对象,必须有一个 type 字段。

动作创建器(Action Creators):是返回动作对象的函数。

Reducer:是一个纯函数,它接收当前的状态和一个动作,然后返回新的状态。

Store:是 Redux 中的核心概念,它保存了应用的状态,并提供了方法来派发动作和监听状态变化。

异步操作创建器:通常是指用于处理异步逻辑的动作创建器,例如使用 Redux Thunk 或 Redux Saga 这样的中间件。

问题分析

如果你遇到“未调用异步操作创建器”的问题,可能是因为以下原因:

  1. 异步操作创建器未被正确导入或使用:确保你已经正确导入了异步操作创建器,并且在组件中通过 dispatch 调用了它。
  2. 中间件未配置:如果你使用的是 Redux Thunk 或 Redux Saga,确保你在创建 store 时已经应用了相应的中间件。
  3. 条件逻辑问题:可能在某些条件下,异步操作创建器没有被调用。

解决方案

使用 Redux Thunk 的示例

  1. 安装 Redux Thunk
  2. 安装 Redux Thunk
  3. 配置中间件
  4. 配置中间件
  5. 创建异步操作创建器
  6. 创建异步操作创建器
  7. 在组件中使用
  8. 在组件中使用

应用场景

异步操作创建器在以下场景中非常有用:

  • 数据获取:从服务器获取数据并在获取后更新状态。
  • 表单提交:处理表单提交并在提交过程中显示加载状态。
  • 定时任务:定期从服务器获取数据以保持应用状态的最新。

优势

  • 清晰的逻辑分离:将同步和异步逻辑分开,使得代码更加清晰和易于维护。
  • 可预测的状态管理:通过 Redux 的单一状态树,可以更容易地追踪状态的变化。
  • 中间件支持:可以使用各种中间件来处理复杂的异步逻辑。

通过以上步骤和示例代码,你应该能够解决“未调用异步操作创建器”的问题,并理解其背后的概念和应用场景。

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

相关·内容

深入学习 Redux 之中间件与异步操作

上一节,学习了 Redux 的基本用法:用户发出 Action,Reducer 函数算出新的 State,View 重新渲染。 但有一个关键问题没有解决:异步操作怎么办?...四、异步操作的基本思路 ---- 理解了中间件以后,就可以处理异步操作了。...同步操作只要发出一种 Action 即可,异步操作的差别是它要发出三种 Action: 操作发起时的 Action 操作成功时的 Action 操作失败时的 Action 以向服务器取出数据为例,三种..."操作结束" 状态,View 再一次重新渲染 五、redux-thunk 中间件 ---- 异步操作至少要送出两个 Action:用户触发第一个 Action,这个跟同步操作一样,没有问题;如何才能在操作结束时...另一种异步操作的解决方案,就是让 Action Creator 返回一个 Promise 对象。 这就需要使用 redux-promise 中间件。

1.1K20

Redux 入门教程(二):中间件与异步操作

上一篇文章,我介绍了 Redux 的基本做法:用户发出 Action,Reducer 函数算出新的 State,View 重新渲染。 但是,一个关键问题没有解决:异步操作怎么办?...四、异步操作的基本思路 理解了中间件以后,就可以处理异步操作了。 同步操作只要发出一种 Action 即可,异步操作的差别是它要发出三种 Action。...操作发起时的 Action 操作成功时的 Action 操作失败时的 Action 以向服务器取出数据为例,三种 Action 可以有两种不同的写法。...五、redux-thunk 中间件 异步操作至少要送出两个 Action:用户触发第一个 Action,这个跟同步操作一样,没有问题;如何才能在操作结束时,系统自动送出第二个 Action 呢?...中间件和异步操作,就介绍到这里。下一篇文章将是最后一部分,介绍如何使用react-redux这个库。 (完)

1.5K40
  • 为什么 Vuex 的 mutation 和 Redux 的 reducer 中不能做异步操作?

    然而,在上面的例子中 mutation 中的异步函数中的回调让这不可能完成:因为当 mutation 触发的时候,回调函数还没有被调用,devtools 不知道什么时候回调函数实际上被调用——实质上任何在回调函数中进行的状态的改变都是不可追踪的...Redux 先从Redux的设计层面来解释为什么Reducer必须是纯函数 如果你经常用React+Redux开发,那么就应该了解Redux的设计初衷。...Redux的设计参考了Flux的模式,作者希望以此来实现时间旅行,保存应用的历史状态,实现应用状态的可预测。...所以整个Redux都是函数式编程的范式,要求reducer是纯函数也是自然而然的事情,使用纯函数才能保证相同的输入得到相同的输入,保证状态的可预测。...所以Redux有三大原则: 单一数据源,也就是state state 是只读,Redux并没有暴露出直接修改state的接口,必须通过action来触发修改 使用纯函数来修改state,reducer

    2.8K30

    Script Lab 09:异步调用函数,PowerPoint基础操作

    【代码解析】 取得当前页,并插入 SVG 图标(发未选中,则引出发错): Office.context.document.setSelectedDataAsync(...)...每个异步函数的名称都以"Async"结尾,以本次调用的函数为例:其实所有的步函数的签名都遵循以下基本模式: functionNameAsync( requiredParameters, [, options...以本次调用为例,setSelectedDataAsync 方法具有 Office 应用程序中所有异步函数通用的相同基本签名: Office.context.document.setSelectedDataAsync...AsyncResult 对象包含有关异步操作的信息,如:操作是否成功;发生了什么错误(如果有);以及异步函数的返回值(如果有)。...09:异步调用函数,PowerPoint基础操作 Script Lab 10:为Officejs开发配置VSCode环境 Script Lab 11:OIfficeJS的三种调试方式

    1.7K20

    android onresume函数,android – 在Activity中重新创建后未调用onResume

    在应用程序设置中进行某些更改时,我在recreate的onActivityResult中调用MainActivity。重新创建后,不调用onResume。...另外,使用处理程序来调用recreate可以解决问题,但会导致眨眼,对用户而言很糟糕。这可能是什么错误?没有recreate的情况下如何使用Handler? 任何想法将不胜感激。谢谢!...最佳答案 在onResume()之前调用OnActivityResult()。...您可以做的是在OnActivityResult()中设置一个标志,您可以在onResume()中检入,如果该标志为true,则可以重新创建活动。...您实际上可以做的是完成活动并开始相同的活动,而不是重新创建活动。您将获得相同的效果。

    3.4K20

    触发器创建删除等操作

    大家好,又见面了,我是全栈君 一、创建一个简单的触发器 触发器是一种特殊的存储过程,类似于事件函数,SQL Server™ 允许为 INSERT、UPDATE、DELETE 创建触发器,即当在表中插入、...触发器可以在查询分析器里创建,也可以在表名上点右键->“所有任务”->“管理触发器”来创建,不过都是要写 T-SQL 语句的,只是在查询分析器里要先确定当前操作的数据库。...创建触发器用 CREATE TRIGGER CREATE TRIGGER 触发器名称 ON 表名 FOR INSERT、UPDATE 或 DELETE AS T-SQL 语句 注意:触发器名称是不加引号的...三、重命名触发器 用查询分析器重命名 exec sp_rename 原名称, 新名称 sp_rename 是 SQL Server™ 自带的一个存储过程,用于更改当前数据库中用户创建的对象的名称,如表名...间接递归:对 T1 操作从而触发 G1,G1 对 T2 操作从而触发 G2,G2 对 T1 操作从而再次触发 G1… 直接递归:对 T1 操作从而触发 G1,G1 对 T1 操作从而再次触发 G1… 嵌套触发器

    1.7K20

    React中的Redux

    永远不要在 reducer 里做以下操作: 修改传入参数; 执行有副作用的操作,如 API 请求和路由跳转; 调用非纯函数,如 Date.now() 或 Math.random()。...所有订阅store.subscribe(listener) 的监听器都将被调用;监听器里可以调用store.getState() 获取当前的state。...其实整个过程和之前使用promise来实现的异步操作是一样的。我们是监听action,然后产生异步操作,执行dispatch方法,将数据结构保存到store中。...在异步操作这块,我们建议使用 redux-saga 中间件来创建更加复杂的异步 action。其中涉及到es6中的Generators可以在文档中查看。...异步数据流 默认情况下,createStore() 所创建的 Redux store 没有使用 middleware,所以只支持 同步数据流。

    4K20

    Redux介绍及源码解析

    , Flux 只支持同步的一些方法调用, 而在 Redux 中提供了相应的解决方案, 那就是通过引入中间件 middleware 的模式添加异步 action, 如 redux-thunk....如上面 disptach 流程所示, subscribe 将在任何一个 action 被执行完后调用, 虽然 Redux 没有传递任何参数给到 subscribe 的 listener, 但是在监听器中可以调用...轮训监听器产生任何影响, 而是在下一个 dispatch 调用时使用新的订阅列表 ● 在 listener 中你也可以调用 dispatch 来更新当前的 state, 从而出现前套 dispatch...中间件可以进行各种异步操作、日志记录等等, 比如说用的最多的中间件应该就是 redux-thunk, 这是与 Flux 的重要区别之一....组件可以有多个Store有唯一的DispatcherState是可变的, 未做保护在Store中执行状态更新不支持异步操作Redux单向数据流函数式编程Flux架构的具体实现无技术栈限制只有一个Store

    2.5K20

    社招前端一面react面试题汇总

    setTimeout中是同步redux异步中间件之间的优劣?...redux-thunk缺陷:样板代码过多:与redux本身⼀样,通常⼀个请求需要⼤量的代码,⽽且很多都是重复性质的;耦合严重:异步操作与redux的action偶合在⼀起,不⽅便管理;功能孱弱:有⼀些实际开发中常...redux-saga优点:异步解耦:异步操作被被转移到单独saga.js中,不再是掺杂在action.js或component.js中;action摆脱thunk function: dispatch的参数依然是...提供了⼤量的Saga辅助函数和Effect创建器供开发者使⽤,开发者⽆须封装或者简单封装即可使⽤;灵活:redux-saga可以将多个Saga可以串⾏/并⾏组合起来,形成⼀个⾮常实⽤的异步flow;易测试...redux-observable优点:功能最强:由于背靠rxjs这个强⼤的响应式编程的库,借助rxjs的操作符,你可以⼏乎做任何你能想到的异步处理;背靠rxjs:由于有rxjs的加持,如果你已经学习了rxjs

    3K20

    百度前端必会react面试题汇总

    更重要的是,你不能保证在组件挂载之前 Ajax 请求已经完成,如果是这样,也就意味着你将尝试在一个未挂载的组件上调用 setState,这将不起作用。...redux-thunk缺陷:样板代码过多:与redux本身⼀样,通常⼀个请求需要⼤量的代码,⽽且很多都是重复性质的;耦合严重:异步操作与redux的action偶合在⼀起,不⽅便管理;功能孱弱:有⼀些实际开发中常...redux-saga优点:异步解耦:异步操作被被转移到单独saga.js中,不再是掺杂在action.js或component.js中;action摆脱thunk function: dispatch的参数依然是...提供了⼤量的Saga辅助函数和Effect创建器供开发者使⽤,开发者⽆须封装或者简单封装即可使⽤;灵活:redux-saga可以将多个Saga可以串⾏/并⾏组合起来,形成⼀个⾮常实⽤的异步flow;易测试...redux-observable优点:功能最强:由于背靠rxjs这个强⼤的响应式编程的库,借助rxjs的操作符,你可以⼏乎做任何你能想到的异步处理;背靠rxjs:由于有rxjs的加持,如果你已经学习了rxjs

    1.6K10

    学习react-redux,看这篇文章就够啦!

    thunk from "redux-thunk"; // 执行异步操作插件 import table from "....在 React Redux 中,如果你想在组件挂载后执行异步操作或订阅状态变化,可以使用该钩子函数。...2、vuex 只适用于 vue 框架之中 # 设计上 1、redux redux 中不可以直接修改原始 state 数据,需要拷贝原数据进行修改 不可执行异步操作,但可以通过中间件处理异步操作 2、vuex...创建仓库;2、获取仓库;3、修改仓库、 在具体实现上如下: Redux:使用 Redux 的步骤包括定义 action 类型、创建 action 创建函数、编写 reducer 处理器,以及创建和配置...Vuex:在使用 Vuex 时,需要定义 state,然后编写 mutations 来修改 state,接着可以定义 actions 来处理异步操作,最后创建一个 Vuex 的实例并配置它。

    30520

    React与Redux开发实例精解

    ;调用非纯函数 九、Action创建函数与Redux Thunk中间件 1.Redux Thunk中间件可以让action创建函数先不返回action对象,而是返回一个函数 2.Action创建函数就是创建...,正是事件驱动这个特性让JS可以执行异步代码,而不会阻塞后面程序的运行 2.Promise是处理异步的优秀方案,它不仅可以通过链式操作帮助我们摆脱回调地狱,还可以在链式操作过程中的任何时刻捕捉异常 3....Redux只能实现同步操作,但是可以通过Thunk中间件实现异步 十七、自定义Redux中间件 1.自定义Redux中间件只需要编写一个三层的嵌套函数 2.一个异步请求通常需要编写三个action,分别在开始请求...1.redux-amrc封装了Redux中的重复性异步操作,只需要将Promise和key值传给redux-amrc,它会完成接下来的所有异步操作 2.在路由组件的onEnter中发起redux-amrc...定制的action创建函数,可以实现数据预载 3.在用户操作所触发的函数中发起redux-amrc定制的action创建函数,可以实现手动加载数据 4.想要操作redux-amrc中的数据,应该将处理action

    2.1K20

    redux-saga学习

    如果redux需要用到 side effect 异步操作,redux-thunk 和 redux-saga 绝对是目前两个最受欢迎的中间件插件。...redux-saga redux-saga是一个用于管理redux应用异步操作的中间件,redux-saga通过创建sagas将所有异步操作逻辑收集在一个地方集中处理,可以用来代替redux-thunk...这意味着应用的逻辑会存在两个地方: reducer负责处理action的state更新 sagas负责协调那些复杂或者异步的操作 React+Redux Cycle(来源:https://www.youtube.com...(即高级 API) Effect 创建器 以下每个函数都会返回一个普通 Javascript 对象(plain JavaScript object),并且不会执行任何其它操作。...select(selector, …args) 创建一个 Effect,用来命令 middleware 在当前 Store 的 state 上调用指定的选择器(即返回 selector(getState

    2.7K10

    redux-saga

    /iterator实现是因为它非常适合流程控制的场景,体现在: yield让描述串行/并行的异步操作变得很优雅 以同步形式获取异步操作结果,更符合顺序执行的直觉 以同步形式捕获异步错误,优雅地捕获异步错误...,例如把[Effect1, Effect2]转换为并行调用 类似于装箱(把业务操作用Effect包起来)拆箱(执行Effect里的业务操作),此外,完整的redux-saga还要实现: 作为middleware...、取消 action并发控制 … 差不多是一个大而全的异步流程控制库了,从实现上看,相当于一个增强版的co 四.术语概念 Effect Effect指的是描述对象,相当于redux-saga中间件可识别的操作指令...常用的Effect creator如下: 阻塞型方法调用:call/apply 详见Declarative Effects 非阻塞型方法调用:fork/spawn 详见redux-saga’s fork...这样保证了LOGOUT总是在执行过LOGIN之后的某个时刻发生的,代码看起来相当漂亮 特定操作提示 // 在创建第3条todo的时候,给出提示消息 function* watchFirstThreeTodosCreation

    1.9K41

    高级前端react面试题总结

    “适时”地让出 CPU 执行权,除了可以让浏览器及时地响应用户的交互,还有其他好处:分批延时对DOM进行操作,避免一次性操作大量 DOM 节点,可以得到更好的用户体验;给浏览器一点喘息的机会,它会对代码进行编译优化...Redux 请求中间件如何处理并发使用redux-Saga redux-saga是一个管理redux应用异步操作的中间件,用于代替 redux-thunk 的。...它通过创建 Sagas 将所有异步操作逻辑存放在一个地方进行集中处理,以此将react中的同步操作与异步操作区分开来,以便于后期的管理与维护。...redux-observable额外的范式,上⼿简单redux-thunk缺陷:样板代码过多: 与redux本身⼀样,通常⼀个请求需要⼤量的代码,⽽且很多都是重复性质的耦合严重: 异步操作与redux的...提供了⼤量的Saga 辅助函数和Effect 创建器供开发者使⽤,开发者⽆须封装或者简单封装即可使⽤灵活: redux-saga可以将多个Saga可以串⾏/并⾏组合起来,形成⼀个⾮常实⽤的异步flow易测试

    4.1K40

    前端高频react面试题

    一些库如 React 视图在视图层禁止异步和直接操作 DOM来解决这个问题。美中不足的是,React 依旧把处理 state 中数据的问题留给了你。Redux就是为了帮你解决这个问题。...实现合成事件的目的如下:合成事件首先抹平了浏览器之间的兼容问题,另外这是一个跨浏览器原生事件包装器,赋予了跨浏览器开发的能力;对于原生浏览器事件来说,浏览器会给监听器创建一个事件对象。...redux-observable额外的范式,上⼿简单redux-thunk缺陷:样板代码过多: 与redux本身⼀样,通常⼀个请求需要⼤量的代码,⽽且很多都是重复性质的耦合严重: 异步操作与redux的...中间件redux-saga优点:异步解耦: 异步操作被被转移到单独 saga.js 中,不再是掺杂在 action.js 或 component.js 中action摆脱thunk function:...提供了⼤量的Saga 辅助函数和Effect 创建器供开发者使⽤,开发者⽆须封装或者简单封装即可使⽤灵活: redux-saga可以将多个Saga可以串⾏/并⾏组合起来,形成⼀个⾮常实⽤的异步flow易测试

    3.4K20

    react结合redux实现一个购物车功能

    这样的话就可以在action函数的内部使用异步函数了,如果这里大家有疑惑可以参照redux-thunk的文档。...selectAll函数生成的action会根据参数来修改数据选中和未选中的状态。 接下里看这两个方法:setdata和selectdata,仔细观察发现前者比后者多了一个异步操作,这是为什么呢?...因为当修改购物车中物品数量的时候,我们需要同步到后端数据,所以这里用setTimeout模拟异步操作,但是selectdata修改数据选中状态不需要同步到后端服务器,所以代码删除了异步操作。...在操作物品是否被选中的复选框事件中,我们用dispatch调用selectdata这个action来更改本条物品的选中状态,在增减数量的点击事件上我们调用setdata这个action来完成数据的操作。...如果要修改除此之外的属性,那么必须要同步到服务器端,就必须调用setdata了,例如商品的数量,或者我们没有完成的删除操作。

    4.8K30
    领券