async fetchData (id) {
const params = { idNumber:id } // 构造parms
const res = await this.$http(xxxxxxxxxxxxxxxxxxxxxxxxx) // 走接口,存到res
const {data, success, message} = res.data // 解构出res中的数据,后面用
if (!success) { // 错误情况处理,错了就return出去,剩下的都是正确的情况了
this.$message({message: message, type: 'warning'})
return
}
// 注意下面的写法,下面的分号放开头是有意义的,不是写错了!至于为啥要放开头个分号。
// 首先我们要用解构语法,解构语法等号前是对应模式
//(详见阮一峰ES6文中的一句话:“这实际上说明,对象的解构赋值是下面形式的简写(参见《对象的扩展》一章)。let { foo: foo, bar: bar } = { foo: 'aaa', bar: 'bbb' }”)
//其次为了赋值给已经定义的变量,最前面不能有let,所以是大括号形式的对应模式语法为开头,这种大括号做开头的,会被浏览器解析成代码块,为了不让浏览器解析成代码块,加上圆括号
//(详见阮一峰ES6文中的一句话:“上面代码的写法会报错,因为 JavaScript 引擎会将{x}理解成一个代码块,从而发生语法错误。只有不将大括号写在行首,避免 JavaScript 将其解释为代码块,才能解决这个问题。let x;({x} = {x: 1});”)
// 但是圆括号会被处理成和上文不会换行,所以为了和上文换行,必须手动加个分号,一般是在上行的末尾,可是正常写都不加的大前提下,就加在下行开头了,记忆起来方便
;({ a: this.dataList.a, b: this.dataList.b} = data)
console.log(this.dataList)
},
研究了半天,没能与es6的三个点-扩展运算符… 一起用,没想到怎么能一起使用,如果能一起用,会更优雅,欢迎大佬来指出如何用