问题标签 [immutability-helper]
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.
reactjs - 使用不变性助手在特定索引处推送新对象
我试图这样做:
但是,它会抛出这样的错误:
javascript - immutability-helper - 坚持操作简单的对象
我想使用 immutability-helper 进行两种类型的操作,但我非常卡住。
我有这些数据,模拟来自 API 的结果:
类型 1 - 当我有索引时更改声音名称
如果我知道声音数组的索引,如何更改其中一个声音名称?我希望使用 update(test_data, $merge ...)。到目前为止我所做的不起作用,所以我没有在这里粘贴它。
类型 2 - 当我知道 ID 时更改声音名称
如果我知道声音的 ID,它是声音数组中对象的属性,是否有使用更新的简洁方法?如果是这样,我很想看到它。否则,我将使用 array.findIndex 来获取索引。
我真的很感谢任何帮助,这个周末我被困住了。
reactjs - 使用 immutability-hepler 更新嵌套数组的最佳方法
我在 React 中使用 immutability-helper 来更新状态。我曾经更新过这样的事情:
但是如何更新一个属性,它是一个数组。假设markers是一个数组,如果我使用创建newElement$set
,它只是创建一个引用副本,因此,这个:
将修改状态。除此以外,正确的方法是什么:
javascript - 打字稿+不变性助手#set
我来加入打字稿旅行车,我想在更新我的 redux 商店时继续使用这个 immutability-helper lib,但由于某种原因,现在我在尝试执行更新时收到此错误?:
[ts] 类型参数 '{ flags: { hideChat: { $set: boolean; }; }; }' 不可分配给“Spec”类型的参数。对象字面量只能指定已知属性,并且“标志”类型不存在“规范”。
我以为这应该是微不足道的,应该开箱即用,我在后台运行的开玩笑测试可以解决这个问题,但 VScode TS Linter 有点生气。
不确定这是一个错误还是只是 VScode 搞砸了。
javascript - 使用 immutability-helper,如何在不克隆其他字段的情况下设置类实例的属性?
这是一个例子:
我想使用该函数将elemArray
's second element's设置x
为 30 。setX
最简单的方法是:
但是我希望能够在不克隆数组的情况下做到这一点ary
,因为它本身可能很大并且克隆可能很昂贵。我怎样才能做到这一点?
谢谢
javascript - 将 immutability-helper 与 Array、Object、Map 一起使用
如何使用immutability-helper进行简单的创建、更新/修改、替换、删除?
如果我有一组简单的值?
如果我有一组简单的对象?
如果我的数组在另一个对象中?
如果我有一个对象?(散列,无序)
如果我有对象地图?(散列,有序)
作为一个初学者,我发现官方文档有点混乱。
reactjs - setState 改变状态,但文本字段中的值没有改变
我有动态数量的文本文件,并将值保存到数组中的这些文本字段中。起初,这些值使用不变性助手从服务器中填充数据,但是当我想编辑文本文件时,它不会改变。当我打印状态值时,值已更改但文本字段未更新。
javascript - React setState 没有将更新的状态数据作为道具传递给组件渲染?
我是一名 React 初学者,正在尝试制作一个纸牌游戏应用程序(使用“react-dnd”来实现拖放功能)。
此应用程序的board
状态(放置卡片的位置)是 4x4 网格,存储为 2d 数组
(初始示例被截断)
当卡片被放置在一个空间上时,这个setState
函数被调用(使用immutability-helper
):
这会setState
调用一个回调函数runAfterSetState
来根据刚刚打出的牌运行实际的游戏逻辑信息。该函数内部是另一个setState
调用。这setState
只会在特定情况下发生,如果有多张敌方牌,玩家现在需要点击其中一张敌方牌。我认为,为了实现这一点,我需要为board
状态中的敌人卡片信息添加一个新的对象键(这样我就可以添加样式、clickHandlers 等)。我认为这是事情出错的地方。
虽然上面的控制台日志似乎显示信息已正确更新,但程序实际上并未反映这一点(使用 React 检查器 Chrome 工具)。我怀疑我的程序在Board
没有这个新更新的信息的情况下再次重新渲染组件,本质上是删除它?据我所知,上面的代码块应该是最后一个被调用的东西,因此应该是组件最后的状态。
在这里的任何帮助将不胜感激。
具有完整工作代码(以及我的愚蠢评论)的 Codesandbox:
https://codesandbox.io/s/billowing-leaf-81hw9?fontsize=14
要查看我的具体问题,一张彩色卡片必须有 2 个或更多箭头接触相邻的敌方卡片箭头。示例图片:https ://i.imgur.com/5SyrSBo.png (红卡左上角和左上箭头接触敌方蓝卡箭头)
javascript - 无法使用不变性助手更新状态
我的状态中有对象,父对象中有嵌套对象,更新状态中的对象可能会导致状态突变,并且建议使用不可变助手的许多答案,(react-addons-update)这是我的状态:
这就是更新房间属性的方式:
和储备属性
但即使它正在获取值和名称,它也不会更新状态。什么是问题?