问题标签 [redux-thunk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
reactjs - 从组件分派时,redux 操作“不是函数”
我正在尝试创建一个带有 CSV 上传的应用程序。当上传 CSV 时,它会改变状态,然后我会从 CSV 解析为 JSON 并用它做一些事情。这个想法是上传文件并更新状态。一旦该状态更新,我会将 CSV 传递给 Meteor.method 以解析为 JSON。我正在使用 Meteor、React 和 Redux。我有一个处理上传、一个动作和一个减速器的组件。所有文件都在下面——我是 Meteor、React 和 Redux 的新手,我终其一生都无法弄清楚为什么这不起作用。我不认为我完全理解我想要完成的事情。欢迎任何建议。
错误 - 未捕获的类型错误:fileUpload 不是函数 UploadCSV.jsx
我不明白为什么如果 fileUpload 是一个动作并且它正在被导入,它为什么是“不是一个函数”。?如果有人可以伸出援助之手,我将不胜感激。
谢谢!
redux - 在 Redux 中重放操作
我正在使用 Redux 构建一个涉及使用计时器的库。我有一个调度START_TIMER
事件的动作创建者,还应该调用start
一个计时器对象。代码如下所示:
我正在尝试解决两个问题:
如果我想将我的操作记录到数据库或 localStorage 以便我可以重播它们以达到一致的应用程序状态,那么即使
rootState.timer.isRunning
是 true,我的计时器对象也不会运行。条件
if (!getState().timer.isRunning)
要求我知道根状态timer
的安装位置。由于我将其构建为一个库,因此我不能假设它timer
总是会直接安装到根状态。
javascript - React/Redux,使用 Redux Thunk 实现多个操作
我正在学习 react/redux 并且有一个具有两个主要状态的应用程序:
- 一组项目
- 包含这些项目的用户指定过滤器的对象
我有三个函数/动作,createFilter
,updateFilter
, 和deleteFilter
修改#2 的状态。我有一个filterItems
根据#2 的状态修改#1 的操作。因此,每当#2 发生变化时,都需要调度此操作。
这是我正在使用的组件:
我发现,当发送过滤器方法之一时,存储(状态#2)在filterItems()
调用时尚未更新。
所以我需要异步执行过滤器函数,并且一旦存储更新调用filterItems
。
我正在努力解决如何使用react-thunk
. 如果第一个函数是一个 ajax 承诺,我会使用.then()
:
但这些只是函数,没有 .then() 方法。我试图弄清楚我最好的行动方案是这个实现。我可以将 Redux 操作包装在一个 Promise 中吗?我在滥用 Thunk 吗?还是我应该完全尝试不同的模式?
reactjs - Redux 在操作中找不到“类型”属性
我在 redux 中使用中间件,但是当我调度一个动作时,但在浏览器中出现错误:
代码在这里:
我的action
:
我的components
:
reducer
:
当我调用时fetchPostsIfNeeded
,它调用fetchPosts
,然后调用dispatch(requestPosts(reddit))
但我的减速器无法处理此操作,我在控制台上的减速器中打印操作,它显示undefined
javascript - 如何将 axios / AJAX 与 redux-thunk 一起使用
我在我的操作中使用axios。我需要知道这是否是正确的方法。
actions/index.js
==>
reducer_weather.js
==>
然后将它们组合到rootReducer.js ==>
最后在我的 React 容器中调用一些 js 文件......
reactjs - 在 Redux 中链接多个异步调度
我正在尝试以下列方式将多个操作链接在一起:
A. 将用户数据发布到数据库
B. 使用发布的数据查询 Elasticsearch 的结果
(我同时做A和B)
B1。使用来自 ES 的结果,从两个表 B2 中查询原始数据库的结果。导航到新页面并更新 UI
我现在正在使用 thunk 来推理我的代码,但我也发现这种异步模式非常冗长:
这与“requestRecipes”和“receiveRecipes”一起作为其他动作创建者似乎只是为了进行一个异步调用。(请求、接收和获取函数)
摘要:当您链接 2-3 个输出相互依赖的异步操作时(我需要在可能的情况下进行承诺),是否有更有效的方法可以在不为每个异步调用编写 3 个函数的情况下这样做?
我想一定有办法。我正在对 Redux 文档进行模式匹配,很快就对我正在创建的函数感到不知所措
非常感谢您的反馈!
javascript - 如果条件,Redux 在其他操作之后调用操作
我应该如何在 redux 中实现以下逻辑:有 2 个操作:同步和异步。假设它的 validate() 和 save()。当用户单击执行的按钮时validate()
,它会更改状态存储中的一些isValid
变量。然后如果isValid
执行了保存操作。
reactjs - Redux - 调度异步操作时更改 URL
在我的 React/Redux 应用程序中,我有一些异步操作。假设用户getData
向服务器发起请求。立即发送 aGET_DATA_REQUEST
并且getData
AJAX 调用正在发送到服务器的途中。
在成功或失败时,相应地分派一个GET_DATA_SUCCESS
或GET_DATA_FAILURE
动作,并将数据呈现给 UI。
现在,我希望我的应用程序推送历史状态(使用react-router-redux
)作为对 AJAX 回调的反应。这意味着,成功后,用户将被“重定向”到另一个 URL(路由),显示依赖于新接收到的数据的不同模块。
我意识到在 reducer 中拥有这个功能是一个非常糟糕的主意,因为它不再是纯粹的(URL 更改是一个副作用)。
有什么想法吗?
谢谢
reactjs - Redux-Thunk 和 Redux-Promise 与 Axios api 一起使用时有什么区别?
几个月以来我一直在使用 React 和 Redux。生态系统中最令人困惑的部分之一是异步数据流。有许多很好的解决方案可用,为您的问题选择正确的解决方案是困难的部分。
在我的应用程序中,动作创建者大多对我的后端 api进行异步axios [ajax] 调用。注入 Redux-Promise 作为中间件解决了异步数据流的问题。
考虑到可扩展的应用程序,我可能需要在我的操作创建器中链接多个 axios 调用。我认为我仍然可以使用 Redux-Promise 作为中间件,这将处理我的应用程序中的异步数据流。
总的来说,团队更倾向于使用 Redux-Thunk,我觉得这个问题的语法更复杂。考虑到我的大多数动作创建者只进行 axios 调用(承诺),我需要在评估这两个框架时提出建议。我在这里看到了大量关于 Redux-thunk 的讨论。我明白 thunk 是如何有用的。. 但我需要更多说明,仅在用于 Promises 时将 Redux-Promise 和 Redux-Thunk 一起评估。在这种情况下哪个中间件更好,为什么?与 Redux-Promise 相比,使用 Redux-Thunk 有什么优势?还是没有?
javascript - Chaining async with sync actions in Redux for calculating initial state?
Sorry for the long text... I'm trying to figure out the best way to chain some actions which need to wait for each other for calculating the initial state. Probably reselect would help, but I'm having a hard time figuring out how to fit it in. I am using ImmutableJS, but I'll use standard JSON to describe my troubles. Initial state should be like:
book and detailedNotes are from a GET call (using fetch). notesByCategory is calculated by my code (at the moment in the reducer...) and I also need to set the initial value for activeCategory as the first calculated category (Vital in the example). Here's the actions.js and reducer.js relevant code:
There's reducer composition also, I omitted it. Now, I want to set the initial activeCategory to the first category, but I have a problem, I have NO idea where to put this. I have to wait first to have the notesByCategory part of the state calculated. I feel that this calculation should not be maybe in the reducer. Any suggestions?