问题标签 [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.
redux - Redux 和在 reducer 中访问不同的 reducer,怎么做?
所以,我有一个应用程序,它有多个减速器,因此有多个关联的动作创建者。
有时我的一个 reducer 会更新状态(因为编辑),因此,我必须确保其他 reducer 看到这个更新并相应地调整它们的状态。
把它想象成用户选择了“运动鞋”,这个状态管理在一个叫做 productsReducer 的 reducer 中。因此,当用户通过应用程序流程时,他们会获得与之关联的couponsReducer ......但用户可以随时“编辑”,所以如果他们随后编辑“运动鞋”并说,选择另一个制作人,我必须能够实时更改 couponsReducer,因为进度模式需要反映这一点。我可以通过流到优惠券页面来做到这一点,因为在那个页面上我只是协调 componentWillMount 上的数据......但问题是我有一个进度模式,在进入优惠券页面之前,用户可以打开进度模式...这里会出现不匹配...
长篇大论我知道,我只是想解释一下我的情况。
所以,我希望能够从 productsReducer 中调用“其他减速器”或它们的动作创建者。
中间件在这里是否合适,我在其中嗅探某个“action.type”,如果我看到它,我可以调度其他 action.type,或者有没有办法从 productsReducer 中调用动作创建者?
importing: import * as coupons from './couponsActions' 以及我需要的任何其他操作似乎都不合适。
reactjs - Redux 中的 ImutebleJS - reducer 出现错误“state.push 不是函数”
嗨,我尝试开始学习在 React 中使用 ImmutableJS。但我愣住了。当我尝试在减速器中使用 List 时,出现此错误“state.push 不是函数”
这是mi代码:
我不明白哪里有问题
reactjs - mapStateToProps 必须返回一个对象。而是收到了 Map {}?
您好,我使用不可变映射作为状态,当我尝试 maspStateToProps 时出现此错误。
Uncaught Invariant Violation:
mapStateToProps
必须返回一个对象。而是收到了 Map {}。
这是我的代码:
零件:
减速器
javascript - 使用 Browserify / Webpack(ES6 或 CommonJS)填充 javascript 资产
如何使用 browserify 或 webpack 正确填充 javascript 而无需额外文件?
让我们以使用 react 或 react-redux 为例。我在 package.json 中有这个配置:
在我的项目中,我将 react-redux 与 line 一起使用import { createStore, applyMiddleware } from 'redux';
,并添加了 react-redux 作为依赖项。当我编译我的项目时,它会生成一个大约 20K 行的 javascript 文件。
问题是,当我填充 react-redux 时,通过使用 react-redux 的 cdnjs ( https://cdnjs.cloudflare.com/ajax/libs/react-redux/4.4.0/react-redux.js
) 并将其添加到 browserify-shim 配置中,我的项目仅使用大约 2K 行,而仅 react-redux js 文件仅使用大约 700 行(该项目仍然有效!)。
为什么会发生?我可以不在 browserify-shim 中添加 react-redux 但仍然只在我编译的项目 javascript 中添加 700 行而不是 18K 行吗?
这里实际发生了什么魔法,魔法实际上是如何起作用的?
reactjs - 不是来自商店的 mapStateToProps 和属性
将不是来自商店的属性包含在 中是否是个好主意mapStateToProps
?
例如
redux - Redux 状态和组件属性未定义,直到 ajax 解析
我的组件通过具有以下功能的道具获取一些属性:
我在同一个组件中使用 ajax 获得了状态关键字:
我的组件被渲染了两次。首先,在 ajax 解析之前,所以在我的渲染方法中我得到了未定义:
哪个是解决它的正确方法?我改成componentDidMount
没有componentWillMount
成功。
现在,基于现实世界的例子,我已经用一个空对象初始化了关键字状态:
我的减速机:
我的行动:
全部基于真实世界的 redux 示例
我的解决方案
给定关键字实体的初始状态。我通过 ajax 得到这样的 json: {'locale': 'en', 'keywords': ['keyword1', 'keyword2']} 但是,当我使用带有语言环境的 normalizr 作为 id 时,为了缓存结果,我的初始状态正如我在减速器中描述的那样:
如果我们有多种语言,我不喜欢的是初始,如果我们添加另一种语言(例如 fr),也要记得修改它。在这个
应该:
reactjs - 保持 redux 和 react-router 同步
我正在开发一个 react (0.14) + redux (3.3) + react-redux (4.4) + react-router (2.0) 应用程序,它包含三个PostsLists
组件:包装这些组件:Post
Blog
到目前为止,我的 redux 状态只是一系列博客文章:
路线是
/posts
仅显示at PostLists
,同时显示 on /posts/:id
Post
(它将是 的子级Blog
)。帖子列表Link
s to /posts/:id
。
Blog
将在挂载时从 HTTP api 获取博客文章,因此如果加载,例如,/posts/1
Post
可能会在有要显示的文章之前挂载。
我的问题是关于管理当前的活动帖子。我最初的想法——我仍然很喜欢——是current_post
在该州拥有一个字段:
但是,例如在加载时/posts/1
,谁应该负责更新current_post
(以确保Post
在更改时重新加载的方式)?如果Post
是一个容器并且我mapStateToProps
曾经拥有过,它会在更改current_post
时重新渲染吗?current_post
另一种选择是检查props.params.id
然后Post
找到正确的帖子,但这似乎有点脏。人们通常如何构建这样的应用程序?
javascript - Redux 动作创建者在另一个内部调用
我在 Redux 中使用鸭子,但这应该与问题无关。我在同一个文件中有几个动作创建者,我想从另一个中调用一个(希望不必为下面的 SWITCH 中的每个 CASE 双重调度):
打开工作正常,但关闭功能永远不会被触发。有没有办法从 open 函数中调用 close 函数,而不需要对 open 函数的 SWITCH 中的每个 CASE 进行双重调度?
通过双重调度,我的意思是......
如果可能的话,我只想调用一次关闭,然后返回指定的打开。
蒂亚!
javascript - 通过上下文传递商店不能在基于 connect() 的场景中工作
编辑:摘要-我的问题的最初原因实际上是一个错字:由于大写的“G”而无法正常工作。
但是,善良的回答者不仅解决了错字,而且解决了我采用的方法中的错误前提 - 如果您也使用 Provider和使用 connect 传递商店,他们的答案与您相关。我已经更新了问题的标题以反映这一点。
我正在尝试按照令人敬畏的 redux 视频<Provider>
中的说明进行操作,但是因为使用react-redux传递商店而感到悲痛。
我有一个根组件:
还有一个尝试使用商店的演示组件:
我得到“未捕获的类型错误:store.GetState 不是函数”
商店来自这里:
并在这里创建:
(不是我的代码,一个支持 react native 和浏览器客户端的框架,我正在开始工作)
我错过了什么?
我从视频中复制了这个 - 请注意,AddTodo 组件没有使用 connect()“包装”:
reactjs - 动态子注入和 Redux 绑定
我们正在尝试将动态子代注入到使用 React-Redux 和 Redux 的 React 应用程序中,并且遇到了绑定子代道具的问题。我已将问题提炼为以下示例代码 ( JSFiddle )。问题是原始渲染元素更新得很好,但动态注入的部分没有。奇怪的是,更新是在 redux 存储中获取的,并且正确地馈送到了 props。