<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        vue使用Proxy實現(xiàn)雙向綁定的方法示例

        來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 21:59:45
        文檔

        vue使用Proxy實現(xiàn)雙向綁定的方法示例

        vue使用Proxy實現(xiàn)雙向綁定的方法示例:前言:vue3.0要用Proxy來實現(xiàn)雙向綁定,因此先來嘗試一下實現(xiàn)方法。 1 Object.defineProperty 實現(xiàn) 原來vue2的實現(xiàn)使用Object.defineProperty,監(jiān)聽set,但對于數(shù)組直接下標給數(shù)組設(shè)置值監(jiān)聽不了。 function observe(data) { i
        推薦度:
        導(dǎo)讀vue使用Proxy實現(xiàn)雙向綁定的方法示例:前言:vue3.0要用Proxy來實現(xiàn)雙向綁定,因此先來嘗試一下實現(xiàn)方法。 1 Object.defineProperty 實現(xiàn) 原來vue2的實現(xiàn)使用Object.defineProperty,監(jiān)聽set,但對于數(shù)組直接下標給數(shù)組設(shè)置值監(jiān)聽不了。 function observe(data) { i

        前言:vue3.0要用Proxy來實現(xiàn)雙向綁定,因此先來嘗試一下實現(xiàn)方法。

        1 Object.defineProperty 實現(xiàn)

        原來vue2的實現(xiàn)使用Object.defineProperty,監(jiān)聽set,但對于數(shù)組直接下標給數(shù)組設(shè)置值監(jiān)聽不了。

        function observe(data) {
         if (!data || typeof data !== 'object') {
         return;
         }
         // 取出所有屬性遍歷
         Object.keys(data).forEach(function(key) {
         defineReactive(data, key, data[key]);
         });
        };
        
        function defineReactive(data, key, val) {
         observe(val); // 監(jiān)聽子屬性
         Object.defineProperty(data, key, {
         enumerable: true, // 可枚舉
         configurable: false, // 不能再重寫defineProperty
         get: function() {
         return val;
         },
         set: function(newVal) {
         console.log('-------通知訂閱者--------')
         val = newVal;
         }
         });
        }
        
        

        2 使用Proxy實現(xiàn)

        使用Proxy實現(xiàn)原理主要是new一個Proxy對象,代理你的data值,需要注意的一點是,對于數(shù)組的方法操作來說,會產(chǎn)生兩次賦值操作,一次是添加值,一次是改變他的length值,而對于Object.defineProperty監(jiān)聽不到的數(shù)組下標給數(shù)組設(shè)置值,Proxy是可以監(jiān)聽到的。

        function observe(data) {
         if (!data || typeof data !== 'object') {
         return;
         }
         // 取出所有屬性遍歷
         Object.keys(data).forEach(function(_k) {
         // Proxy不允許綁定在非對象上
         if (data[_k] && typeof data[_k] === 'object') {
         data[_k] = defineReactive(data[_k]);
         }
         });
        }
        
        function defineReactive(data) {
         return new Proxy(data, {
         set(target, key, value, proxy) {
         // 進行數(shù)組操作時,會進行兩次set 一次數(shù)據(jù)改變,一次length改變,兩次改變data的值是不變,因此不應(yīng)該多分發(fā)一次消息
         if (
         Object.prototype.toString.call(data) === "[object Array]" &&
         key === "length"
         ) {
         Reflect.set(target, key, value, proxy);
         return true;
         }
         observe(data);
         Reflect.set(target, key, value, proxy);
         console.log('-------通知訂閱者--------')
         return true;
         }
         });

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        vue使用Proxy實現(xiàn)雙向綁定的方法示例

        vue使用Proxy實現(xiàn)雙向綁定的方法示例:前言:vue3.0要用Proxy來實現(xiàn)雙向綁定,因此先來嘗試一下實現(xiàn)方法。 1 Object.defineProperty 實現(xiàn) 原來vue2的實現(xiàn)使用Object.defineProperty,監(jiān)聽set,但對于數(shù)組直接下標給數(shù)組設(shè)置值監(jiān)聽不了。 function observe(data) { i
        推薦度:
        標簽: VUE 的方式 的方
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲AV无码乱码国产麻豆穿越| 免费网站看v片在线香蕉| 国产一区二区免费在线| 97se亚洲国产综合自在线| 久久久久久曰本AV免费免费| 亚洲av无码一区二区三区不卡| a毛片免费观看完整| 国产∨亚洲V天堂无码久久久| 精品国产福利尤物免费| 亚洲情综合五月天| 在线观看人成视频免费无遮挡| 亚洲一区二区三区影院| 久久青草国产免费观看| 亚洲图片在线观看| 国产精品视频免费观看| 亚洲国产成人精品久久| 在线播放免费播放av片| 黄色免费在线网址| 国产成人亚洲综合无码| 国产麻豆一精品一AV一免费| 亚洲图片一区二区| 啦啦啦中文在线观看电视剧免费版 | 性色午夜视频免费男人的天堂| 国产亚洲一区二区三区在线观看| 国产裸体美女永久免费无遮挡| 久久精品国产亚洲香蕉| 99久久久精品免费观看国产| 激情五月亚洲色图| 国产精品亚洲二区在线观看 | 亚洲a级在线观看| 韩国18福利视频免费观看| 一级做a爰片性色毛片免费网站| 自拍偷自拍亚洲精品第1页| 日本免费一区二区久久人人澡| 亚洲精品日韩专区silk| 日韩高清在线免费观看| 久久九九全国免费| 天天爽亚洲中文字幕| 亚洲第一视频在线观看免费| 免费精品99久久国产综合精品| 亚洲夂夂婷婷色拍WW47|