问题标签 [redux-immutable]

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 回答
53 浏览

reactjs - redux-immutable 有用吗?

我是redux-immutable官方 redux.js git book 看到的。听起来很棒,但它有多大用处?

注意:我喜欢不可变的 js,这就是我什至考虑它的原因。

看看它的官方文档,我觉得它可能比 pro 更有说服力。

pro,对我来说,可能只是制服状态,不要再忘记“第一级不应该使用 immutableJS”。

就是这样。

  • 我不会在 combineReducer() 列表中添加或删除减速器。
  • 我认为在第一级使用 immutablejs 不会有任何性能改进。

注意:也许,如果我有一个分层的 combineReducer() 结构,它会更有用。

然而,这个骗局可能很烦人。

就像它在自述文件中所说的那样,react-router-redux 将需要一个新的自定义 reducer 才能工作。可以有更多具有类似策略的插件(基于使用可变 combineReducer 的假设),因此迁移可能非常烦人。(特别是对于较大的项目)


有什么强有力的理由可以说服我使用它吗?

0 投票
0 回答
120 浏览

reactjs - 从 redux-immutable 中的 reducer 获取多个属性

我正在使用redux-immutable并且需要connect()在我的组件中使用多个属性。

这是 gameStore 减速器的初始状态:

和组件connect()

但出现错误:

未捕获的类型错误:无法读取 null 的属性“toJS”

那有什么问题?

0 投票
2 回答
2080 浏览

javascript - 将 Redux.createStore 与 Immutable 一起使用会抛出“reducer 不是函数(如何将 Redux 与 Immutable.js 和 composeEnhancers 一起使用)

我编写了这段代码来创建 Redux store

此配置的结果是一个在Immutable.Map()s 内的普通对象:

相反,我希望所有状态树都是Immutable.Map().

所以我试图combineReducers()直接传递给一个Immutable.Map()对象:

但这会在控制台中引发错误:

未捕获的 TypeError:reducer 不是函数

在 combineReducers.js:39

在 Array.forEach ()

在 combineReducers.js:36

在 Map.withMutations (immutable.js:1353)

在 combineReducers.js:35

在 computeNextEntry (:2:27469)

在重新计算状态 (:2:27769)

在:2:31382

调度时(createStore.js:165)

在 createStore (createStore.js:240)

redux-immutable我应该将 的initialState作为函数的第二个参数传递的状态的文档createStore,但我的第二个参数当前composeEnhancers是我需要配置中间件和其他东西的函数。

如何使整个状态树成为一个Immutable.Map()对象?

0 投票
2 回答
1022 浏览

reactjs - redux-immutable mapStateToProps 道具为空

我正在更新我要使用的第一个 react/redux 应用程序,redux-immutable但无法弄清楚其中的道具为何mapStateToProps为空。我看到 thunk 记录器输出中填充了属性,但它们在组件中为空。

components/Packages.jsx

actions/packageActions.jsx

reducers/packageReducer.js

reducers/initialState.js

reducers/rootReducer.js

store.js

thunk log

编辑

Redux DevTools 显示了正确的数据结构,但mapStateToProps仍然返回空列表。

Redux 开发工具:

Packages.jsx

我更新initialState了解决问题的state.getIn(['packages','results']);问题undefined。但是,结果属性仍会生成一个空列表。

0 投票
1 回答
3615 浏览

reactjs - 使用反应样板正确设置 redux-persist v5

我一直在尝试redux-persist 5.9.1使用reactboilerplate 3.4.0框架进行设置。

我收到的错误似乎与redux-immutable我无法确定正确的配置有关。

这是我到目前为止所做的:

1.安装NPM

npm i -S redux-persist redux-persist-transform-immutable

package.json "redux-persist": "^5.9.1", "redux-persist-transform-immutable": "^5.0.0",

2.设置Redux Persist instore.js

3. reducers.js 没有变化

4.更新App.js

仍然没有运气:

错误:

我认为我没有正确配置不可变映射。有什么帮助吗?

redux-persist 错误

0 投票
2 回答
3100 浏览

javascript - 将 redux-persist 与 redux-immutable 一起使用时出错

我尝试将redux-immutableredux-persist一起使用。

我搜索了很多,但我没有找到解决此问题的任何解决方案。

商店.js:

我在控制台中的错误:


笔记:

在 add 之前我没有任何错误redux-persist

如果您有任何想法,请帮助我。

0 投票
1 回答
294 浏览

redux - 不可变 JS:更新嵌套的动态对象

我的初始状态是,

在我的减速器中,因为我已经定义了嵌套结构page

工作正常。

由于我没有为currentor定义嵌套结构meta

引发错误“无效的密钥路径”

当我记录状态时,

0 投票
1 回答
1279 浏览

reactjs - React Redux 加载栏未显示

我在使用 React Redux 加载栏时遇到问题。它没有显示出来。我在根减速器中使用不可变 js,redux 不可变库。我没有收到任何错误。如果我检查元素树,则只有一个空 div。我在这里犯了什么错误

index.js

减速器.js

store.js

0 投票
2 回答
538 浏览

reactjs - Redux-Saga 使用 Immutable.js 并且状态始终为空

我正试图围绕 redux 和 sagas 进行思考,我认为我设置了一些错误,我希望有人可以提供一些见解。

我已经用我的初始状态创建了我的商店,并且我发送了一个动作,如下所示:

Combine Reducers 来自 redux-immutable。

我的传奇功能:

我的减速器功能:

当我询问状态对象时,size它为零。由于我的初始状态,我预计大小至少为 3。当它newState被“创建”时,大小为 4。但是当它回到状态切换语句时,状态大小再次为零:

我 90% 肯定只是像我在 reducer 函数中所做的那样转储状态是错误的,我应该使用set()或者setIn()我认为update()更有意义,但是当我使用这些方法时,如果我尝试,状态总是为空或“未定义”.get(x)在控制台中制定。

当我在浏览器中检查状态时,它看起来像这样:

展开的数组如下所示:

我希望作为有效负载一部分的值在这里,而不仅仅是新的objectmap.

我是否在商店创建时错误地初始化了我的状态?我是否以错误的方式处理 redux 和状态管理?

0 投票
1 回答
376 浏览

reactjs - 使用 combineReducers 时设置 reducer 及其子 reducer 的状态

我正在扩展仅限本地的 React 应用程序的功能以连接到 API。这是我重构之前的代码。您会看到我正在从全局窗口变量 INIT_STATE 设置初始状态,该变量还包括一些其他根级对象。

我专注于这些根级对象之一,称为“项目”。

对于项目减速器,我正在规范化(使用 normalizr)这样的状态并组合减速器以获得规范化实体的使用减速器:

在我的重构中,我已经分派了操作以在我的顶级容器中获取和接收 API 请求。GET_REQUEST_SUCCESS我可以通过处理这些减速器中的操作以返回响应的那部分,轻松地设置其他根级对象的初始状态,而不是以前在 INIT_STATE中的状态,但是由于projects已标准化并具有嵌套的子减速器,我不确定如何使用 combineReducers 设置此状态。

所以最终,我希望能够组合减速器,同时处理一个可以覆盖其所有子减速器状态的操作。这是可能的还是有更好的方法来解决这个问题?

非常感谢。