2019年的第一篇文章
1.故事起因,且看以下代码
|
|
看了上面的代码很多都说5秒钟列表渲染有变化, 其实不然。。。3s后dom无变化。
在Vue中,Object.defineProperty无法监控到数组下标的变化,导致直接通过数组的下标给数组设置值,不能实时响应。
2.来瞧一下proxy的用法
|
|
可以看到proxy其实和defineProperty很相似, 如果将上述的obj.name = ‘kkkkk’,那么p会怎样。。。
3.基本运用trap1 之set
|
|
3.基本运用trap2 之has
|
|
4.基本运用trap3 之set 修改行为
|
|
注意这个api.getUsers最后被修改为了一个function, 相当于一个装饰器作用。
5.最后再来看一个例子
|
|
用到了apply, 注意如果被代理的对象如果不是函数, 那么返回的proxy实例没有apply属性。