问题标签 [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 回答
2321 浏览

reactjs - React:使用 useReducer 和 useContext 异步检索信息

我正在尝试重现我使用 Reactjs/Redux/redux-thunk 所做的事情:

  • 显示微调器(在加载期间)
  • 从远程服务器检索信息
  • 显示信息并移除微调器

该方法是使用useReducer模拟本教程中解释的useContextredux 。对于异步部分,我依赖 . ,但我不知道是否有任何替代方法。这是我的代码:redux-thunkuseReducer

组件本身:

数据提取器文件:

动作文件:

我的商店本身:

我尝试部分重用本文中的逻辑,但从未显示微调器(数据已正确检索和显示)。

您的帮助将不胜感激!谢谢

0 投票
1 回答
150 浏览

reactjs - Redux Reducer 上的一个大动作或两个小动作

我在我的 react-native 项目中使用redux。我必须使用一些 Switch 组件(true 或 false)来选择不同的颜色并将它们保存到 state 中的数组中。根据我的开关选择,我可以有一个空数组或例如 ["black","white"]。

我的问题是是否有一个名为“EDIT_COLOR”的操作并在其中包含一个“IF”语句来检查我是否正在从数组中添加或删除颜色,或者有两个操作一个用于添加,另一个用于删除。

第一个优点是只将一个动作传递给组件,但减速器在内部使用 IF 语句会变得更大一些。

非常感谢您的评论!

0 投票
2 回答
46 浏览

javascript - 如何更新嵌套在 redux 状态中的对象中的某些键值

我有以下数据:

我希望id:1 在我的 redux reducer 中更新需求对象。

这是我到目前为止所拥有的,但它似乎没有工作并且它超级混乱:

0 投票
1 回答
123 浏览

reactjs - 如何更新 redux 存储树,然后先用数据更新另一棵树?

我有一个带有数据输入的图表和用户界面。我使用 redux 来存储图表数据。我有2棵树。一 - 用于图表组件。它包含数字数组(轴坐标)。第二个是ui。它包含对象数组:{轴坐标,可见性}。

这种结构基于在图表中显示/隐藏某些数据的能力。

在此处输入图像描述

Redux 商店

我希望我的图表组件从存储中获取清晰的数据数组,而不需要可见性逻辑。但我需要它用于ui。所以我来到了这个结构。可能是错的。但我没有其他想法。

因此,当我单击复选框时,我会更改存储对象 chartSettingsData 中的可见性。然后,我需要用图表的数据更新另一棵树。在 reducer 中更新 chartSettingsData 后,我尝试克隆过滤数组。

但是我在 chartSettingsData 更新之前在 chartSettings 中获取数据。在这种情况下,更新 redux 存储的正确方法是什么?

0 投票
2 回答
107 浏览

reactjs - 在redux reducers中更新时,不应该是state.slice().map而不是state.map()吗?

所以我正在阅读关于 Reducers 主题的 redux 文档,他们提到它应该是纯函数。我知道这是为了比较状态对象是相同的还是旧的。但我在Redux Reducers 文档中注意到以下代码片段

在这里,他们直接访问 state.todos 数组并使用 map 运算符。这意味着 map 将更新传递的 state 参数。考虑到 reducer 在这里是纯函数,我们不应该在这里更新参数本身吗?

为什么我们/他们没有像下面这样使用 slice()?

0 投票
1 回答
968 浏览

javascript - 如何使用 immer 对数组进行排序?

我正在尝试将一个对象添加到减速器中的数组中,然后,我想按日期对其进行排序(我可以尝试按顺序插入,但我认为或多或少是相同的努力)。

我正在使用 immer 来处理减速器的不变性:

console.log 显示正在打印:

所以.. 我真的不知道如何draftState.current.entries使用 immer 对数组进行排序。

欢迎任何建议,

谢谢

0 投票
2 回答
1011 浏览

javascript - 如何删除多个数组项

我正在使用反应 js。我想添加一个选项来删除多个项目。但是在删除每个项目后,页面会刷新道具而不是删除剩余的项目。

如何删除多个项目?

减速器:

0 投票
0 回答
37 浏览

reactjs - 状态变量在 React Redux 中互相更新?

我在使用 react redux 时遇到问题。在我的一个减速器中,它的功能是添加到购物车。我从数组(例如recentProducts)中获取选定的项目作为对象。在数组中,我更改数量不幸的是,所选项目对象中的数量也会自动更改。如果我更改对象,则保存该对象的数组也会在同一执行中更改。我不确定为什么会这样。我的商店实现如下。

0 投票
1 回答
599 浏览

reactjs - 如何在 redux-persist 存储中的多个减速器上运行迁移?

我在 redux-persist 商店中有一个 reducer 的工作 redux-persist 代码。我给出了reducer的初始状态来存储,每次reducer的状态结构发生变化后,我都会更新迁移数(在这个例子中是25),它工作正常。但我想拥有多个减速器并分别对它们运行迁移(根据需要更新它们)。我也尝试过 automergelevel2 但它不会更新嵌套状态键中的键。或者是否有任何其他方法代替应用迁移和 automergelevel2。

0 投票
1 回答
235 浏览

reactjs - Delete one item in an array ReactJS (React Hooks and Redux)

I'm creating a recipe application using MERN stack.

The issue I am stuck on is trying to delete an ingredient found in an array, inside a recipe object. My recipe object looks like this:

MongoDB Recipe Object

Each ingredient has a cross next to it that allows you to click on it to remove.

The addIngredients and removeIngredient functions look like this:

Every time I remove an ingredient from my list I get an error that states "TypeError: Cannot read property 'map' of undefined".

Is there something that i'm missing here? I have been working on this app for the past couple of months now and I am stuck on this particular bit. I thought a better way would be to use Redux as I have been able to delete a whole recipe using a reducer:

but how would I be able to target one particular ingredient?

Any suggestions would be greatly appreciated.