<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
        主站蜘蛛池模板: 亚洲 综合 国产 欧洲 丝袜| 97碰公开在线观看免费视频| 日本一区二区三区日本免费| 亚洲日本在线电影| 最近免费中文字幕4| 亚洲色偷偷色噜噜狠狠99| 成人免费无码大片a毛片| 亚洲精品无码国产片| 日日操夜夜操免费视频| 黄网站在线播放视频免费观看| 国产美女精品视频免费观看 | 中文日韩亚洲欧美制服| 成人免费视频88| 爱情岛亚洲论坛在线观看 | 亚洲自偷精品视频自拍| www.免费在线观看| 中文字幕精品三区无码亚洲| 国产片免费在线观看| 亚欧乱色国产精品免费视频| 亚洲国产精品无码久久久秋霞2| 久久综合给合久久国产免费| 亚洲日韩乱码中文无码蜜桃| 美女被免费视频网站a国产| 久青草国产免费观看| 亚洲国产成人久久综合一| 久久天天躁狠狠躁夜夜免费观看| 亚洲国产精品嫩草影院| 成人亚洲性情网站WWW在线观看| 香港a毛片免费观看| 亚洲欧美日韩国产精品一区| 亚洲国产成人久久一区久久| 久久这里只精品99re免费| 在线亚洲高清揄拍自拍一品区| 午夜亚洲av永久无码精品| 日本一道本不卡免费| 亚洲精品国产综合久久久久紧| 亚洲人成网站在线观看播放| 国产免费av片在线看| 最近免费字幕中文大全| 亚洲精品动漫免费二区| 亚洲av无码专区在线播放|