小编Vin*_*Rye的帖子

在 React 和/或 Redux 中使用 ES6 Map

我正在考虑使用 ES6 Map对象为我做散列,而不是创建自定义散列函数。然而,在我看来,它对不变性的支持并不多,这对于 React 和 Redux 来说都是一个关键的事情。

我习惯于不使用任何库来实现不变性,而只使用简单的解构:

const newObj = { ...prevObj, newKey: "value" }
Run Code Online (Sandbox Code Playgroud)

或使用数组映射/过滤。

但是,ES6Map具有直接更新对象本身的方法。

我能想到的是做这样的事情:

var myMap = new Map()
Var myNewMap = { ...myMap.set() }
this.setState({ myMap:myNewMap })
Run Code Online (Sandbox Code Playgroud)

但我不确定这是否有效。

javascript dictionary reactjs redux react-redux

9
推荐指数
3
解决办法
8218
查看次数

如何基于动态定义的变量解构对象

我正在使用一个不可变对象,我需要添加一个减去值的数组。

我知道可以通过以下方式使用ES6销毁。

const {countries, remainder} = someObj // {countries:...,languages:..., ...keys};
Run Code Online (Sandbox Code Playgroud)

最后,剩下的就是没有国家密钥的新对象。

因此,我发现可以在数组上使用reduce来从对象中删除所有值,并使用默认参数作为原始对象,最后返回一个新对象。

但是,我不确定该怎么做,因为键的名称是在数组中定义的。

arrayToRemove.reduce((total, value) => {
  const { extractValue: [value], ...remainder } = total
  return remainder;
}, { ...originalObj });

arrayToRemove.reduce((total, value) => {
  const { [extractValue], ...remainder } = total
  return remainder;
}, { ...originalObj });
Run Code Online (Sandbox Code Playgroud)

我期望最终得到一个新的Object,而没有包含在名为arrayToRemove的数组中的键。

我需要在保持不变性的同时执行此操作,因此我不能仅遍历原始对象并将其从中删除,因此我认为以上内容将是解决该问题的一个聪明方法。

任何帮助表示赞赏。

javascript destructuring ecmascript-6 object-destructuring

3
推荐指数
2
解决办法
680
查看次数