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

javascript - 在不传递道具的情况下管理嵌套的 Redux 容器?

给定这样的组件层次结构:

...还有这样的商店:

嵌套组件是否有一种很好的方法TodoStatus可以连接到商店,而不必将id组件层次结构作为道具向下传递?例如,Todo可以设置currentTodoId = 1为上下文,这可用于子减速器,但有替代方案吗?也许是一种父组件将存储减少到单个待办事项的方法,然后子组件将能够看到......?

此时,您可能想问“为什么”?TodoList好吧,考虑到在(对待办事项数组进行操作)和嵌套TodoStatus(只想对单个待办事项进行操作)之间可能存在多个级别的严格表示组件。必须通过这样的层次结构向下传递todoId是非常痛苦的:

在这一点上,我在想象这正是 React 上下文的优势所在,所以可能没有特定于 Redux 的模式,但我想错了!

0 投票
2 回答
2050 浏览

reactjs - React Redux 在复选框单击时添加直通

在选中复选框后,我试图添加一个直通。我正在使用 react 和 redux。动作和减速器起作用。我只需要一种在何时添加此线路的checked方法true请在下面找到我尝试实现的代码。提前致谢。

/actions/items.js

/reducers/items.js

/components/Editor.jsx

/components/Item.jsx

0 投票
1 回答
943 浏览

javascript - Redux:单个容器,多个组件

我对 React 和 Redux 都很陌生,我不确定我正在处理的案例的最佳实践和技术解决方案。我在这里使用 Dan Abramov 定义的“组件”和“容器” 。

我正在处理的组件是一小部分过滤器组件:一个输入文本字段和两个按钮,它们都过滤实体列表。我尝试了两种方法:

第一种方法:单个组件包含两种容器的三个实例,容器连接到相应的组件。

这是我第一次做的。在这里,根组件如下所示:

这里引用的两个容器看起来和预期的差不多,连接的组件也是如此。我将以 FilterLink 为例:

以及对应的FilterButton组件:

这种方法有效,但我认为没有必要创建两个不同的容器。这再次引导我进行第二次尝试。

第二种方法:包含多个组件的单个容器。

在这里,我做了一个更大的容器:

在这里,整个组件的所有状态交互都集中在一个组件中。这里的组件与第一种方法中的相同。然而,这并没有真正起作用:ownProps 在 mapStateToProps 和 mapDispathToProps 中都是空的。我可能误解了 react-redux 连接的工作原理。

所以,考虑到这些事情,我有两个问题:就容器和组件而言,构建这个组件的最佳方式是什么?其次,为什么 ownProps 在第二种方法中的工作方式与第一种方法不同?

感谢您的时间。

0 投票
1 回答
2071 浏览

reactjs - redux 中的调度操作给出错误'[react-router] You cannot change; 它将被忽略

我在我的应用程序中使用 reactjs、react-router 和 redux。我正在使用异步操作,以下是我的 action.js 代码

以下是我的 store.js 代码

以下是我的 reducer.js 代码

现在,每当我发送一个操作时,我的浏览器控制台上都会显示一个错误,说明

警告:[react-router] 你不能改变'Router routes';它将被忽略

我尝试用'react-router-redux'解决这个问题,但它没有解决。

0 投票
2 回答
3734 浏览

redux - react redux:容器组合

我正在构建一个 React+Redux 应用程序,我正在考虑在另一个容器中使用一个容器。我问自己这是否是一个好方法,即。这是一种好的做法,还是我们应该严格遵守 1 个容器和多个组件的规则?

0 投票
1 回答
42439 浏览

javascript - Redux 路由器 - “调度未定义”

我有一个简单的组件,它在用户加载页面时调用一个动作,并且在该动作中,我试图调度另一个动作来将loggedIn商店的状态设置为 true 或 false:

我可以在guestLoginRequest调用操作时获取登录信息,但是当我尝试在其中调度另一个操作时,什么也没有发生:

Uncaught ReferenceError: dispatch is not defined删除return dispatch => { }语句时出现错误。在我的商店中,我使用的是 redux-thunk,所以我可以在动作内部调度:

我也在我的 app.js 中将调度映射到道具:

以防万一,这是我的 client.js 和 reducer 文件:

任何想法为什么我的调度功能不起作用?我很困惑,因为我确实在我的商店中设置了 redux-thunk,并且我在调用return dispatch => { }. 有什么我想念的吗?提前感谢您的任何建议!

0 投票
1 回答
317 浏览

javascript - 带有 JavaScript 承诺的多个函数

目标:

使用 JavaScript 承诺,在 load() 上,如果数据库尚未填充,则使用数据为其播种,然后使用 getWidgets() 显示数据,否则,如果数据库已经播种,则只需 getWidgets()。

编码:



在 load() 中处理这三种方法的正确方法是什么?

  1. 种子数据库(如果尚未填充)
  2. 将记录添加到会话
  3. 显示会话对象

谢谢

0 投票
1 回答
4300 浏览

reactjs - 处理 React/Redux 表单中的提交

我想在用户提交表单时捕获表单值。React 教程显示了这一点:

这种风格通过每个输入的处理函数将所有更改推入状态。如果我要全面使用 Redux,我相信我会在其中添加动作和动作创建者,这似乎是很多开销。

注意参数 tohandleSubmit是一个事件。

我遇到了以下 React/Redux 入门工具包,它看起来更容易使用。它使用智能/容器组件和哑/演示组件组合:

容器

表现性的

我不清楚的是,为什么表单处理程序的onSubmit处理程序会为其 Facebook 教程的参数接收一个事件,但为什么入门工具包的onSubmit处理程序正在获取表单数据......入门工具包正在利用该redux-form包,但我看不到它直接影响该处理程序的行为方式。

0 投票
1 回答
2968 浏览

redux - 共享 Redux 不同的应用商店.. 怎么样?

我在这里有点头疼。我有两个应用程序。它们是单独的工具。但是,工具 1 之一使用工具 2 的一部分。工具 1 如何进入工具 2 Redux 状态?是否有一个中间件可以让我以某种方式绑定它们。

TOOL APP1 --- 有自己的 redux 商店 TOOL APP2 --- 有自己的 redux 商店

我需要来自 APP2 的 APP1 行为。因此,与其“构建”一个新版本,不如导入 APP2 的子部分并使用它......现在,问题来了。APP1 现在需要知道如何设置和检索它存储在 APP2 子组件中的状态......

有没有一种方法可以让 redux 做到这一点,或者?

更糟糕的是,我想我可以将 APP2 子组件状态存储在 localStorage 或 redis 等中。然后我可以用它来水合 APP1 .. 但是....

0 投票
1 回答
23468 浏览

javascript - React - 在更改事件中检测“输入”按键

我有一个 React 组件,它或多或少是一个用户可以输入的简单文本区域。到目前为止,代码如下所示:

这个组件连接到一个 redux 存储,每次用户在文本区域输入内容时都会更新该存储。redux store 将新值发送回 textarea 组件,textarea 组件重新渲染以显示新值。

虽然到目前为止这是有效的,但如果按下回车键,我希望这个组件的行为有所不同。由于更改事件不公开keyCode(至少我不知道),我不知道如果按下回车键而不是调用道具,如何使handleChange函数调用道具。addsetText

我尝试的一件事是将onKeyDown处理程序附加到 textarea,我可以使用它来检测输入 keyCode (13),但这使我无法正确设置文本,因为如果我将附加到事件的 keyCode 转换为字符并将其附加到当前值,我无法确定它应该是大写还是小写。

我被困在这里了。我真的不认为我有办法在更改事件上检测回车键,并且 keyDown 事件没有办法让我处理所有可能的输入。有没有办法可以将两者结合起来?

提前致谢!