问题标签 [redux-reducers]

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 投票
1 回答
34 浏览

redux - Redux 传播 InitialState 模式

最近,我偶然发现了每个 reducer 都如下所示的代码库。我猜他们正在传播initialState以摆脱减速器初始化时的一些“剩余”嵌套状态,但这有意义吗?

0 投票
1 回答
180 浏览

reactjs - 如何修复我的减速器以返回对象的属性值?

我的 react native 应用程序中有一个减速器,理想情况下它应该检查状态并返回是否喜欢配方。如果 isFav 是 true 或 false 对于状态中的配方对象,我试图创建一个减速器来返回。如果在该状态下未找到配方,则应返回 false。

我在试图弄清楚如何编写减速器时碰了壁。这就是我到目前为止所拥有的。

这是我的 favids.js 减速器

这是我的actions.js

我正在尝试修改 is_favourite 减速器以返回 true 或 false,这是保存在状态中的配方对象的 is_fav 属性的值。

我试图在渲染组件时在可见组件的 useEffect 中调用它。

这是 favicon.js 文件

0 投票
1 回答
273 浏览

reactjs - TypeScript & React:可重用的通用动作/组件

我将 TypeScript 与 React 和 useReducer 一起使用,并且我想以类型安全的方式定义 reducer Actions。

Action 的最简单近似是:

更精确的版本需要联合类型:

到目前为止,一切都很好。然后我想定义依赖于 Action 或者更确切地说是它的导数的组件React.Dispatch<Action>。有两种方法可以做到这一点:

  1. 接受(多个)泛型
  2. 定义更广泛的类型

方法 1) 在理论上更加类型安全,但在实践中更加冗长和复杂。方法 2) 可以在安全性和复杂性之间取得很好的平衡。

Pager两种样式的组件道具示例:

^ 现在可以定义并将Pager2其移动到不依赖于特定应用程序的库中。并且没有泛型。那是提供必要背景的介绍。PageLimit

问题随之而来React.Dispatch。这是在存在更精确版本的地方模仿通用调度重用的测试用例:

错误如下:

^但在上面的代码中,我们实际上分配"toggleColumn"string. 出了点问题。

这是沙箱:https ://codesandbox.io/s/crazy-butterfly-yldoq?file=/src/App.tsx:504-544

0 投票
1 回答
113 浏览

reactjs - 无法理解react redux中的reducer功能

这是我的减速器功能:

到目前为止,我所了解的是减速器功能获得旧状态和新状态。旧状态由表示'posts',新状态由'action.payload'...表示,现在我不明白的是什么[...posts, action.payload]

那三个点是什么?为什么有方括号?reducer 函数返回什么?这里发生了什么?我是java程序员,这里什么都不懂

0 投票
1 回答
452 浏览

reactjs - react-redux 中的 dispatch 函数和 reducer 函数之后会发生什么?

假设如果我使用 调度一个动作dispatch(),我知道它reducer()被称为 which has an action object and current state as parameters。我想知道什么叫减速器功能?在 reducer 函数之前和 dispatch 函数之后调用了哪些函数?在reducer函数返回新状态之后,之后调用了哪些函数?这个新状态去哪儿了?在 reducer 函数返回新状态后是否还会返回一些usestate()东西?useselector()

0 投票
1 回答
333 浏览

javascript - 使用 immer 不能修改属性 Number of nested object

我正在使用带有 Redux 的 Angular 2+ 并且很好,但不能用新值修改数量

错误是:TypeError:无法分配给对象“[object Object]”的只读属性“数量”

0 投票
1 回答
34 浏览

javascript - (React Redux)整个状态重新启动并删除我添加新项目时所做的所有更改

减速器是这样的:

动作 Creator 是

以及我触发动作的组件

是什么导致商店的状态在每次添加新商品时重新启动?

拉斐尔

0 投票
2 回答
157 浏览

reactjs - 如果在反应中使用 useState 而不是 this.state,如何将状态传递给调度操作?

我是一个初学者,在使用react-reduxuseState时遇到了状态管理方面的困难。在下面的代码中,我基本上遵循了一个教程,该教程将传递this.state到函数中的调度操作createProjecthandleSubmit如下所示。

现在,我不使用类组件,而是使用功能组件并使用useState钩子。在handleSubmit函数中,如何将状态传递给未定义的函数组件以及如何传递状态来代替this.props.createProject(),它是存储状态还是其他东西,我很困惑。this.propsthis.stateprojectinfo

TLDR;我想从钩子this.props.createProject(this.state)的角度重写这条线。useState

下面是我写的代码:

任何帮助或理解这一点的线索将不胜感激。谢谢!

0 投票
2 回答
126 浏览

javascript - TypeError:无法访问属性 Symbol.iterator,状态 [action.payload.savedVideos] 未定义

我对 redux 有疑问。我正在开发一个应用程序,您可以在其中保存有关您的 youtube 视频的注释。一切正常,但是当我开始添加“ADD_ITEM”操作时,每次在减速器中执行此操作时都会出现相同的错误。我遇到的错误是:TypeError: can't access property Symbol.iterator, state[action.payload.savedVideos] is undefined。我正在使用连接方法和函数 mapDispatchToProps 似乎很好,所以问题可能出在减速器或动作创建器中。这是我的减速器中的添加项目功能:`

这是我的动作创建者:

和我的初始状态:

0 投票
1 回答
28 浏览

javascript - React redux - 状态中的推送对象未映射但initialState是

我正在开发一些应用程序,您可以在其中保存有关视频的注释。我有一些 redux 问题,抱歉我不具体,但我不知道问题出在哪里。每次当我使用“ADD_ITEM”操作时,在 devtools 中一切正常,我可以看到值处于状态,但它们没有被映射,只有状态的初始值被映射。

这听起来真的很奇怪。为了向我的应用程序添加内容,我正在使用 Formik,所以问题可能出在我的表单中?这是该问题的视频:

https://user-images.githubusercontent.com/69200598/113505397-d9d41d00-953e-11eb-8e39-ccc60b4ce2cd.mp4

顺便说一句,不要试图在这个视频中理解我,我是波兰人 :)

这是我实际映射的初始状态:

这是我的减速器:

动作创建者:

(addItem 在 mapDispatchToProps 中作为 addItemAction 导入) mapDispatchToProps

以及 formik 中提交所有内容的位置:

<Formik initialValues={{ title: '', link: '', content: '', created: '' }} onSubmit={(values) => { addItem(values); handleClose(); }} >