使用ES6和React对Array进行解构和重新排序

时间:2017-08-17 10:22:21

标签: javascript arrays reactjs ecmascript-6

我想使用解构解决方案在我的React容器中重新排序我的数组,它应该非常简单。 给定一个数组a1 = ['hello', 'hi', 'hola']

componentDidMount() {
  const { a1 } = this.props
  this.a2 = []
  [a2[2], a2[0], a2[1]] = a1  --> this line give an error!!
  console.log('new ordered array', a2) // ['hola', 'hello', 'hi'] --> this print properly my new array
}

如果我尝试控制日志或在渲染中使用它,我得到undefined 我在那一行得到的错误是:

Uncaught (in promise) TypeError: Cannot set property '#<Object>' of undefined

我真的不明白为什么我可以在console.log中正确打印该值,但是当我尝试在代码中实际使用它时它不起作用。 它可能与React循环相关吗? 我也尝试在我的州内使用它,但也遇到了同样的错误。

2 个答案:

答案 0 :(得分:5)

这一行会给你一个错误,因为这是自动分号插入让你失望的极少数情况之一。永远不要使用([]开始换行,否则解释器会将其视为上一行的延续,并将[(视为属性访问操作或函数调用。

这将有效:

this.a2 = [];
[a2[2], a2[0], a2[1]] = a1

或者这个:

this.a2 = []
;[a2[2], a2[0], a2[1]] = a1

答案 1 :(得分:1)

此行中有.而不是, [a2[2], a2[0]. a2[1]] = a1 --> this line give an error!!