- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
查看 redux 和 ngrx,immer 似乎是在存储之前生成状态副本的推荐库。按照 immer 示例,我将以下代码添加到我的 reducer 中:
on(exampleActions.updateExample, (state, { example }) => {
return produce((state: ExampleType, draft: ExampleType) => {
draft.push({ example });
draft[1].done = true;
});
})
typescript 提示 no-shadowed-variable
,这与示例冲突。此外,我无法在没有返回类型错误的情况下返回值。
在 example
是多级对象的情况下:
const example = {
a: {
b: { c: 1 }
}
};
draft
也需要完全取消引用。
immer 和 createReducer
集成的示例并不多,因为这是 2019 年的最新更改。我是否应该禁用 no-shadowed-variable
规则immer 或者是否有更好的模式来确认 state
和 example
都被正确地取消引用。 example
是一个多层次的对象。
或者,我可以避免使用 immer 并使用 ramda clone
或尝试手动深度复制所有内容。
最佳答案
这就是ngrx-etc求解,使用 mutableOn
函数(使用 Immer)
const entityReducer = createReducer<{ entities: Record<number, { id: number; name: string }> }>(
{
entities: {},
},
mutableOn(create, (state, { type, ...entity }) => {
state.entities[entity.id] = entity
}),
mutableOn(update, (state, { id, newName }) => {
const entity = state.entities[id]
if (entity) {
entity.name = newName
}
}),
mutableOn(remove, (state, { id }) => {
delete state.entities[id]
}),
)
可以找到源代码here ,您应该朝着正确的方向前进。
关于javascript - 将 Immer 与 NgRx reducer 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59037865/
我正在尝试使用从服务器获取的一组数据来更新一段状态。这是我的 reducer : const schoolsDataReducer = (state = { data: [] }, action) =
不知道为什么连我都修改了草稿,immer没有给我提供新的状态,而是修改了内容的旧状态实例。 import CartItem from "../../models/cart-item"; import
我开始使用 Immer.js 以实现 JS 中的不变性,但我找不到使用过滤器方法删除数组中对象的方法。它返回相同的对象。顺便说一句,我在 React 中使用状态来做这件事,但为了让它更直接,我编写了反
我正在使用最新版本的 immer(6.0.5) - https://www.npmjs.com/package/immer它似乎不适用于 IE11 。在控制台中得到一个神秘的错误 有没有办法让“imm
我正在使用 immer在 react 应用程序中处理状态更改。假设状态没有像我预期的那样改变,所以我想调试它,但是 console.log和 debugger给出 Proxy不包含任何有用信息的对象,
//I want my action to dispatch payload like // {type:'update',payload:{'current.contact.mobile':'XXX
我想知道是否可以在一次“调用”中使用 immer.js 更新状态的多个属性。 假设我有状态: export const initialState = { isUserLogged: false,
为什么我的 immer reducer 没有返回新值,即使 reducer 内部的吃水已经改变?我正在使用 console.log 检查我的草稿是否在 immerReducer 中被更改: // in
我正在尝试将一个元素添加到我的 Redux 存储中对象的数组中。我看到对象已添加到商店,但它没有更新组件。如果我离开页面并返回它就会出现。 我很确定这是一个状态突变问题,但我无法弄清楚我哪里出错了,除
Redux Style-Guide状态: Avoid putting non-serializable values such as Promises, Symbols, Maps/Sets, fun
import produce from "immer"; const initialState = { isLoading: true, error: "", burgers: [], }
我正在开发一个 React 项目并使用 Redux 进行状态管理。我正在从 ImmutableJS 转移到 Immer,我不确定如何通过一些更改返回初始状态。我正在使用来自 ImmutableJS 的
我有一个调用handleApplyFiltersButtonClick 的按钮,它通过将过滤器应用于某些数据来更新状态。我的某个地方有一个错误。我正在努力调试使用 Immers 产品的状态,因为一切都
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 3 年前。 Improve th
我正在使用 immer转换 react/redux 状态。我还可以使用 immer 只深度复制一个对象而不对其进行转换吗? import produce, {nothing} from "immer"
安装 react-router-dom 后。 我发现我有一个弱点。 正是这样: 我没有找到太多有用的信息来解决。有没有人遇到过这个问题? 最佳答案 作为临时解决方法,直到第三方包将其依赖项更新为最新的
Eslint 总是提示 Unallowed reassignment from fp/no-mutation rule for basic immer 构造: const nextState = pr
查看 redux 和 ngrx,immer 似乎是在存储之前生成状态副本的推荐库。按照 immer 示例,我将以下代码添加到我的 reducer 中: on(exampleActions.upda
我正在使用 redux-starter-kit(其中包括用于可变更新的 Immer 库)并且由于某种原因这个 reducer 不起作用: reInitializeState(state, action
我正在尝试在 Typescript 项目中将 Immer 与 Redux 结合使用。 Redux reducer 可以输入为: Reducer 我应该能够用 Immer's produce funct
我是一名优秀的程序员,十分优秀!