【问题标题】:Invalid attempt to destructure non-interable instance解构不可迭代实例的无效尝试
【发布时间】:2019-08-12 08:07:54
【问题描述】:

我正在尝试在 react-native-swiper 中做一个简单的地图。所以我用这个:

const onlyOneObservation = [...new Array(pagesCount + 1)].map(([key, idx], i) => this.renderPage(key, idx, i))

但是有了这个,我得到了这个错误:

解构不可迭代实例的尝试无效

经过研究,我不知道问题出在哪里。

【问题讨论】:

  • 嘿,这是我最近一小时使用 React Native 时遇到的类似错误的最高 google 结果。我附加了调试器,但由于我是 JavaScript 新手太多,因此无法从中获取任何可操作的信息。我只是想说,我的错误是我设置了一个状态变量,而没有将它包装在“React.useState()”中。这与您所面临的问题类似(我们都意外地创建了一个格式错误的值,该值在正确的位置没有数组)

标签: react-native swiper react-native-swiper


【解决方案1】:

... 运算符解构一个现有 对象/数组,并创建一个具有相同属性和值的新对象/数组。例如:

let obj = {
  val1: 'value1',
  val2: 2
}
let obj2 = { ... obj };
console.log(obj2); // will log: { val1: 'value', val2: 2 };

但是你要做的是:[...new Array(pagesCount+1)]。这里有两个问题:

  1. 为什么还要解构呢?为什么不直接做 (new Array(pagesCount+1)).map( /*code */)?

  2. 我的猜测是它会在构建数组之前尝试对其进行解构,或者尝试将... 运算符应用于new 关键字,尽管我不确定它内部实际发生了什么。无论如何,如果你真的需要这种解构(同样,不明白为什么),我很确定 [...(new Array(pagesCount+1))] 应该可以工作,或者只是去掉数组声明。

【讨论】:

  • @Acam np 人。如果您想了解更多关于传播语法的信息以更好地使用它,请转到here。另外,如果我的回答对您有帮助,请在答案附近用绿色 V 标记社区,您也将因遵循社区标准方式而获得声誉:)
猜你喜欢
  • 2021-10-10
  • 1970-01-01
  • 2016-12-14
  • 1970-01-01
  • 2020-03-10
  • 2017-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多