问题标签 [redux-loop]

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.

0 投票
0 回答
673 浏览

reactjs - Redux Saga 和循环

我有一个需要集成 Redux SagaLoop的用例。两者结合在一起的天真实现不尊重 Loop 的自定义CombineReducers,所以当引入副作用时,存储 Loop 效果的隐藏数组被暴露,因此 reducer 的状态树的根变成了一个数组(0具有正常状态,1有副作用)。

所以问题存在。我如何让它们在同一个沙箱中玩得很好?

0 投票
1 回答
1206 浏览

ajax - 复杂的 redux 循环示例?

redux-loop有没有用于处理复杂 ajax 工作流的示例?官方回购非常简约。从我能找到的一个野外例子(https://hackernoon.com/why-i-wrote-a-redux-async-outerware-277d450dba74#.2ocaloc58)看来,redux-loop 非常相似到 redux-thunk。

以下是一些复杂的 ajax 工作流程示例:

  • Ajax 工作流1。用户在结果表上选择两个不同的过滤器。每个过滤器启动一个 ajax 请求,然后无序解析。结果表应显示正确的过滤器选择。错误不应更新结果表。
  • Ajax 工作流 2
    • 用户开始生成报告(这是一个长期运行的过程)。
    • 用户切换到另一个报告。它应该取消或忽略挂起的“等待报告”操作。
  • 更复杂的工作流程(基于一个旧的 redux-saga 示例)
    • 用户按下登录按钮,这将启动 ajax 请求以获取身份验证令牌
    • 任何一个
      • 用户立即按下注销按钮,该按钮应取消/忽略待处理的身份验证操作
      • 或者它应该在解析时存储身份验证令牌
    • 注销后或发生登录错误时应清除身份验证令牌
0 投票
1 回答
308 浏览

reactjs - Redux-Loop dispatch 没有从 reducer 返回 promise

我正在使用 v2.2.2 的 redux-loop 来处理来自服务器调用的副作用。

从我的组件中分派了一个动作,如下所示:

我希望我的承诺会从调度中回来,但它总是会回来

[]

我的动作看起来像这样...

其中 getUser 看起来像:

并被减速器捕获并保存到如下状态:

数据总是会正确返回,但由于某种原因永远不会作为对原始调度的承诺而返回。

任何建议都会很棒!

0 投票
1 回答
514 浏览

react-native - React Router 与 Redux Loop - Reducers 可能不会调度操作

我正在尝试在 redux 操作后导航到上一个屏幕。我正在react-router使用react-router-reduxredux-loop

这是场景:

  1. 在主屏幕上有一个用户列表/home
  2. 点击用户以转到他们的个人资料/home/profile/1234
  3. 编辑用户名并点击保存this.props.dispatch(UserState.updateUser(id, user, history)
  4. 用户更新成功后,返回主屏幕/home

这是一些代码:

看法:

行动:

减速器:

这会导致错误Reducers may not dispatch actions

在另一个项目中,我使用redux-saga并能够成功地将历史对象传递给 saga 和 push/goBack。尝试传递历史对象并在其中调用它似乎发生了一些事情redux-loop

我正在为现有生产应用程序的更新导航系统开发 POC,因此redux-loop需要使用。

任何提示/帮助将不胜感激。如果我遗漏任何有用的代码,请告诉我。

0 投票
2 回答
314 浏览

javascript - `redux-loop` 和 `connected-react-router` 兼容吗?

我使用以下博客文章中的示例代码制作了一个简单的反应应用程序,我仅将其作为引用。我对 javascript 生态系统还是陌生的,并且正在尝试将几个不熟悉的工具组合在一起(以便学习它们)。

https://medium.com/@notrab/getting-started-with-create-react-app-redux-react-router-redux-thunk-d6a19259f71f

相关地,我的store.js样子是这样的:

这似乎工作正常,我页面上的Link/Route触发器工作正常。请注意,installfromredux-loop被称为增强器(?)的一部分,这很好。我的减速器中没有任何loop调用,我只是将install命令作为增强器插入,希望能够添加一些。

这是我的主要reducer代码:

同样,这很好用。loop但是,如果我在减速器中插入任何位置,它就会死掉。根据文档,这是因为我们需要使用combineReducersfrom redux-loop。美好的。如果我将顶部的导入替换为import { combineReducers, } from 'redux-loop';(根本不改变我的减速器,还没有非标准的返回),那么我会在库代码中得到一些完全无意义的错误:

它持续了很多页,但问题似乎出在ConnectedRouter; 我认为这是因为combineReducersin将主减速器的响应类型更改为与调用redux-loop中的不兼容的内容connectRouter(history)(rootReducer)createStore

这是正确的问题吗?这是可以修复的吗?这两个库可以一起使用吗?

0 投票
1 回答
326 浏览

javascript - 为什么 redux-loop 操作会跳过所有中间件?

我运行redux-loop 官方示例,稍作改动:

  1. 而不是fetch我使用超时的承诺。
  2. 我添加了日志中间件(来自 redux.js.org 教程的复制粘贴)。

副作用功能:

行动:

初始状态:

减速器:

我的自定义日志中间件:

配置商店:

调度第一个动作以开始这一切:(我的代码)

输出:

在此处输入图像描述


如您所见,第二个操作跳过了我的日志中间件,而且日志的最后一行我也不清楚。为什么 reducer 接收的是一个函数而不是实际的用户对象?

0 投票
1 回答
1041 浏览

redux - 什么是 redux-loop 以及我们如何在 react native 中使用它

什么是 redux-loop,在 React Native 应用程序中使用它的主要目的是什么?

0 投票
1 回答
147 浏览

javascript - 使用 redux-loop 在 Cmd.run 中未调用副作用函数

我正在开发一个 react redux 应用程序,在该应用程序中,单击按钮我需要更改我的窗口位置。到目前为止,我正在调度按钮单击操作并尝试使用 redux-loop 在减速器中实现导航。

组件js

动作js

减速器js

效果js

除了这个动作之外,我还有很多涉及副作用和状态操作的动作,因此是 redux-loop。

我有两个问题:

  1. navigateTo()单击按钮时控制不会进入。我究竟做错了什么?

  2. 我觉得 reducer 不是一个合适的地方,因为我们没有在这里操纵状态。调度按钮单击操作时,放置这段代码的最佳位置是什么?

0 投票
1 回答
81 浏览

redux - How to access global state from redux-loop combineReducers?

I'm using react-loop, and I'm trying to use its combineReducers but extend it to pass as a third parameter the global state, basically implementing an API similar to https://github.com/Velenir/combine-reducers-global-state

Combine reducers basically invokes the childReducers as we can find in its code

The idea is to pass there a third parameter, so , action, plainState, ...args so that the reducer receive it as parameter. The problem is how to produce that plainState, since the rootState is basically a combination of array of the form ([state, Cmd]) instead I need only the plain state, without redux-loop handler variables.