在 connectedCallback
初始建立时 , 我们需要处理 html 如何呈现 在 attributeChangedCallback
属性变更时 , 根据不同的属性来做对应的处理
我们何不效仿 React 做出一个根据 data 的 render 函式 ,
建立 render 函式前 , 我们可能需要有一个元件的资料中心 ( React 是 this.state / Vue 是 )
然後资料变更时 , 会通知元件需要触发 render 函式
刚好浏览器中有个 Proxy 物件 , 可以达到 observe 资料 & 触发 render 的功能
下面我们先来认识一下 Proxy 物件吧 !
下面我们来举例说明一下
const handler = {
// 取出资料时 , undefined 回传 "资料未定义~~"
get: function (obj, prop) {
return obj[prop] || '资料未定义~~';
},
// 更新的数值都 * 2
set: function (obj, prop, newValue) {
if (newValue) obj[prop] = 2 * newValue;
}
};
const target = {};
const p = new Proxy(target, handler);
p.a = 1;
p.b = undefined;
console.log(p.a); // 2
console.log(target); // { a : 2 }
console.log(p.b); // '资料未定义~~'
console.log('c' in p, p.c); // false, '资料未定义~~'
下面我们用图片来解说 , 上面的范例都发生了那些事情 ~
p.a = 1
设定 p.a 的时候 , 我们会将数值丢给 handler.set 函式做处理
并且 set 函式接收到的参数如下 :
因为 newValue 存在 , 因此 handler.set 会将 target 物件改成 { a : 2 }
p.b = undefined
console.log(p.a)
取出 p.a 的时候 , Proxy 会透过 handler.get 函式做处理
并且 get 函式接收到的参数如下 :
因为 obj[a] 存在 , 因此 handler.get 回传数值 2
console.log(p.b)
同理 , 取出 p.b 的时候 , Proxy 会透过 handler.get 函式做处理
并且 get 函式接收到的参数如下 :
因为 obj[b] 不存在 , 因此 handler.get 回传字串 '资料未定义~~'
前面提了 一堆的内容 实务上呢? 我们可以用OpenCV和Python来实现一个人群计数器 为了实现...
建立虚拟资料表有两个方法,今天要来示范第一个方法,我已第四章报表作为范例: 首先我们,先在你所使用的...
前言 今天, 是系列文的小小里程碑, 我们终於在今天找出了 task 的其中一种非同步演算法。 他被...
嗨,我是 A Fei,让我们看看今天的题目: (题目来源:Codewars) You probabl...
1.前言 这边主要是为解说前几篇关於AHT10的程序码,此次主要讲的部分是loop中的程序码,因为透...