问题标签 [redux]

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 投票
2 回答
1978 浏览

reactjs - React-redux 跨访问状态值

在过去的两周里,我一直在使用 redux,我遇到了一个问题,我想访问/更改另一个 reducer 的状态值。我怎样才能做到这一点?

例如:我有两个组件' A-Component '和' Message-component '分别有' A-actions '、' Message-actions '和' A-reducer '、' Message-reducer '

当调用' A-Component '的动作时,它将调用相应的reducer函数,我需要更新Message-reducer状态值,该值将显示消息框

A-动作

A-减速机

上面提到的消息状态值是消息reducer的状态值。我想从 A-reducer 更新消息状态值,从而更新消息组件。这在redux中可能吗?

我尝试了各种中间件,但失败了。

预先感谢!

0 投票
2 回答
14143 浏览

reactjs - Redux:如何进行后端持久化的意见/示例?

我想知道使用 Redux 的人是如何接近他们的后端持久性的。特别是,您是将“动作”存储在数据库中还是仅存储应用程序的最后一个已知状态?

如果您正在存储操作,您是否只是从服务器请求它们,然后在给定页面加载时重放所有操作?这不会导致有很多操作的大型应用程序出现一些性能问题吗?

如果您只存储“当前状态”,那么当客户端上发生操作时,您如何在任何给定时间实际保持此状态?

有没有人有一些关于他们如何将 redux reducer 连接到后端存储 api 的代码示例?

我知道这是一个非常“取决于您的应用程序”类型的问题,但我只是在这里思考一些想法,并试图了解这种“无状态”架构如何在全栈意义上工作。

谢谢大家。

0 投票
1 回答
5365 浏览

javascript - 更改状态的数组而不更改整个状态(REACT / REDUX)

我有一个要买的东西清单(对于我用 React 制作的一个小游戏),它是一个数组。它处于一种称为“市场”的状态。我还有另一个,我想随机化所有值并将它们存储在另一个状态。

这是我的市场清单:

我想随机化其中的所有值并将随机列表存储在一个名为“明天”的状态中,以便能够提供有关下一个价格的提示。这是我随机排列列表的助手。

这是我的明天减速器:

正如您在我的 ACTIONS.BUILD_TOMORROW_LIST 中看到的,我首先在控制台记录操作以检查值,然后在我记录随机列表后,谁总是具有相同的值。我不明白为什么如果我更改它们它们具有相同的值。

我以为是因为数组是完全一样的,我直接改变了状态(不明白为什么)。我将列表作为由值和扩展运算符构建的新数组传递,也不起作用。我试图创建这个数组的副本,也不起作用。

当我们单击“留在这里”操作时,明天的列表将用于替换当前市场的列表。

MarketActions.changeWholeList 操作效果很好,但我无法正确存储明天的列表。

感谢您的帮助!

0 投票
0 回答
393 浏览

reactjs - 减少 mapStateToProps 执行时间

我在redux reducer 中有一个标准化状态,并且希望将对象作为视图模型加入,例如帖子、评论和喜欢。因此,在每个操作上,都mapStateToProps通过三个集合之间的自定义连接来执行繁重的工作。有没有办法避免这种昂贵的重新计算?

我听说过,reselect但不知道如何在我的情况下使用它。

减速器状态如下所示:

我正在将这些地图合并mapStateToProps到每个帖子或评论编辑中,而且速度很慢,无法使用。

整体情况示意图

0 投票
2 回答
1382 浏览

reactjs - 无法将 Redux 连接到孙组件

如何将 Redux 连接到比父组件低几层的子组件?我不知道如何在store不爆炸的情况下进入道具。

我没有使用 IronRouter,而是使用带有 React 0.13 的 Redux 3。这是一个例子:

在“连接(搜索栏)”的上下文或道具中找不到“商店”。要么将根组件包装在 a 中<Provider>,要么将“store”作为道具显式传递给“Connect(SearchBar)”。

0 投票
6 回答
68085 浏览

javascript - 如何在 Redux 应用程序中动态加载 reducer 以进行代码拆分?

我要迁移到 Redux。

我的应用程序由很多部分(页面、组件)组成,所以我想创建许多减速器。Redux 示例表明我应该使用它combineReducers()来生成一个 reducer。

另外据我了解,Redux 应用程序应该有一个商店,它是在应用程序启动后创建的。创建商店时,我应该通过我的组合减速器。如果应用程序不是太大,这是有道理的。

但是如果我构建了多个 JavaScript 包怎么办?例如,应用程序的每个页面都有自己的捆绑包。我认为在这种情况下,一个组合减速器不好。我查看了 Redux 的源代码,发现了replaceReducer()函数。这似乎是我想要的。

我可以为我的应用程序的每个部分创建组合减速器,并replaceReducer()在我在应用程序的各个部分之间移动时使用。

这是一个好方法吗?

0 投票
1 回答
219 浏览

redux - 处理异步(thunk'd)操作中的副作用

我有一个异步 actionCreator 来处理我的应用程序的身份验证流程:

如果用户成功通过身份验证,我的 actionCreator 包含从授权中提取用户信息的业务逻辑;这个逻辑应该存在于我的动作创建者中吗?如果没有,我应该把它放在哪里,在我的减速器内?

在其他架构中,我会绑定一个命令来触发AUTHENTICATION_RESPONSE;但这感觉不像是中间件工作?

0 投票
2 回答
4155 浏览

javascript - 我应该将与 redux 中的操作相关联的同步副作用放在哪里?

(注意:我的问题没有写清楚,我在想一些错误的事情。当前版本的问题只是试图写一些可以使接受的答案对尽可能多的人有用的东西。)

我想要一个将项目添加到商店并将其注册到外部依赖项的操作。

我可以使用 thunk 中间件并编写

但是订阅者会在项目注册之前收到通知,并且他们可能依赖于它是否被注册。

我可以颠倒顺序并写

但是我通过一个唯一的 id 跟踪外部依赖项中的项目,很自然地只在 reducer 中分配。

我可以在减速器中注册该项目,但我知道在减速器中产生副作用是非常糟糕的形式,可能会导致问题。

那么最好的方法是什么?

(我的结论是:有很多方法可以使用,但对于我的用例来说,最好的方法可能是将句柄存储到 Redux 的外部依赖项中,而不是将句柄存储到外部依赖项中的 Redux 中。)

0 投票
0 回答
1458 浏览

javascript - 从反应组件返回纯文本

我正在尝试制作一个反应组件,它将让我返回纯转换文本。但是,react 强制返回至少一个包裹内容的 html。

我想像这样添加一个静态实用程序函数

不确定这是否是一个好的模式,但这在我当然不尝试访问状态之前有效。因为在 Component 初始化之后 state 才可用。有没有办法让我以某种方式访问​​状态,可能是手动初始化组件。

或者,也许我可以通过某种方式做到这一点

0 投票
1 回答
608 浏览

ruby-on-rails - React/Babel:组件不仅仅在 CircleCI 上呈现

我最近在 Rails 应用程序中添加了带有 React-Redux 和 Babelify(用于 ES6)的 ReactJS。黄瓜测试在本地通过,但在 CircleCI 上没有通过。到目前为止,这是我所知道的:

  • 当我检查工件中的屏幕截图时,React 组件似乎没有呈现,即使等待它们出现的时间长达 4 秒。
  • CircleCI 构建中没有错误
  • 我试过在没有缓存的情况下在 CircleCI 上重建。
  • 基本的依赖于 javascript 的测试正在通过。
  • 依赖 babel 和导入库(lodash)的基本测试正在通过

如何让我的 React 组件的黄瓜测试通过 CircleCI?