获取用户信息
涉及的知识点:async/await、解构赋值、axios
该部分就是通过axios来获取一个地址中的用户信息,算是很简单的一块。
主要是加深了async/await和解构赋值的使用
代码:
使用了async/await
import axios from 'axios'
async created () {
// 解构赋值
const {
data } = await axios.get(this.url)
}
没使用async/await
created () {
axios.get(this.url).then(res => {
this.user_list = res.data
console.log(res.data)
})
}
- 对于node_modules里面的API,在引用时直接写名字就可以,不用写地址。
- 由于内部有异步操作,所以这个created()钩子函数就是一个异步函数了,async要写在这个钩子函数前。
- 对于获得的数据,比如这个例子中我们只用得到data属性,使用解构赋值可以精简代码。
- 经过前面的学习知道,await后面要跟一个Promise对象,所以可知axios其实也是一个Promise的封装,那么如果不使用async就要使用Promise的基本方法来处理信息了。
Proxy代理用户信息
涉及知识点:Proxy对于数据的处理、sort()、concat()
之前只晓得Proxy的原理,但是对于具体的应用还是没有概念很模糊的。
首先要梳理一下Proxy的特点,相比较于Object.defineProperty(),Proxy是针对整个对象,而不是单一属性的,所以我们可以通过拦截函数中的逻辑来选择属性进行操作。
代码:
基于上面获取用户信息的代码,通过Proxy来代理用户信息。
- 如代码中所示,Proxy可以通过对key值进行判断然后再进行所需属性的操作。(这里需要注意的一点是,对于本身没有的属性,可以直接通过自定义属性的方式访问,比如const a = obj.prop)
- 如果不想修改原数组而只是返回一个修改后的值,对于数组可以使用concat()方法,对于对象可以使用assign()方法.
- 对于sort()方法的进一步理解。(字符串不能直接用)
参数:可选。规定排序顺序。必须是函数。
返回值:对数组的引用。请注意,数组在原数组上进行排序,不生成副本。
参数的原理:如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。
sort()方法是按字符编码进行排序的,所以对于字母也可以进行排序,在下面例子中想通过对象的name属性进行排序。
export default {
data () {
return {
url: 'http://jsonplaceholder.typicode.com/users',
user_list: []
}
},
async created () {
// 解构赋值
const {
data } = await axios.get(this.url)
// 代理
this.proxy = new Proxy({
}, {
// 哪些值要放data里?
<