成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Vue中的this.$options.data()和this.$data用法說明

瀏覽:4日期:2022-12-27 16:50:30

問題

項目里遇到一個問題,用this.$options.data()重置組件data時,data()里用this獲取的props或method都為undefined,代碼簡化如下:

export default { props: { P: Object }, data () { return { A: {a: this.methodA }, B: this.P }; }, methods: { resetData () { // 更新時調用 Object.assign(this.$data, this.$options.data()); // 有問題?。?! }, methodA () { // do sth. }, methodB () { // 通過用戶操作調用 this.A.a && this.A.a(); // this.A.a is undefined, this.B is undefined?。。? } }}

調用resetData()之后,再調用methodB()時,this.A.a和this.B是undefined。

解決

resetData里這樣寫:

resetData () { // 更新時調用 Object.assign(this.$data, this.$options.data.call(this));}

原因

和Vue實例的初始化相關。(源碼version2.6.10)

1、new Vue的時候傳了一個對象,把該對象記為options,Vue將options中自定義的屬性和Vue構造函數(shù)中定義的屬性合并為vm.$options,vm.$options.data()中的this指向vm.$options,而methodA和B并沒有直接掛在vm.$options下,所以this.methodA和this.B為undefined。

// 創(chuàng)建一個vue實例const options = { customOption: ’foo’, data () { A: this.methodA }, methods: { methodA () {} }, created: function () { console.log(this.$options.customOption) // => ’foo’ }};new Vue(options); // src/core/instance/init.jsinitMixin (Vue: Class<Component>) { const vm: Component = this // ... vm.$options = mergeOptions( resolveConstructorOptions(vm.constructor), options || {}, vm ) // ...}

2、然后將vm.$options.data映射到vm._data,使得可以通過vm._data訪問數(shù)據(jù),在映射過程中,通過call將data()的this指向當前的實例vm,并將data()的執(zhí)行結果返回,因為prop和methods的初始化在data之前,所以這時vm上已有_props和_methods,可以拿到this.methodA和this.B。(vm.key如何實現(xiàn)vm._props.key效果見3)。

// src/core/instance/state.jsinitState (vm: Component) { // ... const opts = vm.$options if (opts.props) initProps(vm, opts.props) if (opts.methods) initMethods(vm, opts.methods) if (opts.data) { initData(vm) // 里面通過getData(data, vm)改變this } // ...} getData (data: Function, vm: Component): any { // ... try { return data.call(vm, vm) // this替換為vm } // ...}

3、上面把屬性映射到了vm._data里,可以通過vm._data.A訪問數(shù)據(jù),Vue再通過一個代理方法使得vm.A可以直接訪問A。

// src/core/instance/state.jsproxy(vm, `_data`, key); proxy (target: Object, sourceKey: string, key: string) { sharedPropertyDefinition.proxyget = function proxyGetter () { return this[sourceKey][key] } sharedPropertyDefinition.set = function proxySetter (val) { this[sourceKey][key] = val } Object.defineProperty(target, key, sharedPropertyDefinition)}

總結

data()中若使用了this來訪問props或methods,在重置$data時,注意this.$options.data()的this指向,最好使用this.$options.data.call(this)。

以上這篇Vue中的this.$options.data()和this.$data用法說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標簽: Vue
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美一卡二卡三卡| 成人丝袜高跟foot| 99精品1区2区| 欧美一区二区视频在线观看2020| 天堂av在线一区| 国产精品推荐精品| 亚洲精品菠萝久久久久久久| 永久久久久久| 亚洲乱码中文字幕综合| 亚洲精品无人区| 精品播放一区二区| 美女视频一区二区| 91国产免费观看| 亚洲国产精品尤物yw在线观看| 亚洲黄色视屏| 一级特黄大欧美久久久| 国产模特精品视频久久久久| 亚洲一区二区av在线| 香蕉亚洲视频| 日韩国产欧美一区二区三区| 久久久久久亚洲精品杨幂换脸| 亚洲午夜精品网| 久热精品在线| 奇米777欧美一区二区| 欧美亚洲国产bt| 国产一区二区三区香蕉| 日韩一二三区视频| 成人h动漫精品一区二| 亚洲精品在线免费观看视频| 97aⅴ精品视频一二三区| 久久久久久97三级| 欧美精品三级| 亚洲女子a中天字幕| 国产精品免费一区二区三区在线观看 | 精品不卡一区二区三区| 亚洲视频一区二区在线| 亚洲一区二区四区| 蜜芽一区二区三区| 正在播放一区二区| 成人福利在线看| 中文字幕欧美日本乱码一线二线 | 亚洲高清不卡| 亚洲激情校园春色| 久热精品视频| 国产九色sp调教91| 久久影视一区二区| 亚洲狼人精品一区二区三区| 午夜免费久久看| 欧美日韩精品高清| 成人av高清在线| 亚洲视频一区二区免费在线观看| 久久成人在线| 国产麻豆一精品一av一免费 | 裸体素人女欧美日韩| 石原莉奈在线亚洲二区| 欧美日本一道本在线视频| 丁香六月久久综合狠狠色| 国产精品色一区二区三区| 一区二区国产精品| 精品一区二区综合| 久久久国产精品午夜一区ai换脸| 在线亚洲自拍| 久久国产尿小便嘘嘘| 久久先锋影音av| 亚洲一卡久久| 丁香啪啪综合成人亚洲小说| 国产精品毛片久久久久久久| 国产精品亚洲综合久久| 国产一区二区视频在线播放| 国产女主播视频一区二区| 亚洲日本欧美| 九一久久久久久| 国产午夜精品一区二区| 久久精品中文| thepron国产精品| 一区二区三区国产精华| 91.麻豆视频| 亚洲福利精品| 久久国产精品色| 亚洲国产精品av| 久久一区二区三区超碰国产精品| 国产99一区视频免费| 日韩一区欧美一区| 欧美精品色综合| 欧美日韩亚洲免费| 奇米精品一区二区三区在线观看| 久久综合色天天久久综合图片| 一区二区三区视频在线播放| 国产精品99久久久久久似苏梦涵 | 久久精子c满五个校花| 蜜桃久久精品乱码一区二区| 东方欧美亚洲色图在线| 亚洲麻豆国产自偷在线| 日韩写真欧美这视频| 伊人久久婷婷色综合98网| 美女视频黄 久久| 国产亚洲一区字幕| 色屁屁一区二区| 红桃视频国产一区| 国产精品88888| 亚洲欧美国产三级| 欧美变态tickling挠脚心| 国产一区二区三区久久久久久久久| 国产一区二区三区四区五区美女| 国产精品久久久久久久第一福利 | 亚洲人精品午夜| 制服丝袜亚洲播放| 蜜桃久久av| 国产综合欧美在线看| 国产成人精品www牛牛影视| 一区二区高清在线| 久久久美女毛片| 欧美丝袜丝nylons| 亚洲久色影视| 国产成人免费在线观看不卡| 亚洲最大成人网4388xx| 久久精品人人做| 欧美男生操女生| 中国女人久久久| 欧美高清视频一区二区三区在线观看| 久久电影网电视剧免费观看| 亚洲综合色婷婷| 国产精品免费免费| 日韩精品在线一区二区| 色菇凉天天综合网| 亚洲夫妻自拍| 欧美一区二区三区久久精品| 韩国在线一区二区| 无码av免费一区二区三区试看| 国产无一区二区| 欧美日韩国产高清一区二区三区| 午夜一区二区三区不卡视频| 狠狠爱www人成狠狠爱综合网| 高清在线观看日韩| 捆绑变态av一区二区三区| 一区二区三区高清| 欧美韩国日本不卡| 精品国免费一区二区三区| 欧美色窝79yyyycom| 午夜综合激情| 99av国产精品欲麻豆| 91香蕉视频污在线| 免费人成精品欧美精品| 亚洲一区二区三区免费视频| 欧美激情中文不卡| 精品国产乱码久久久久久1区2区| 欧美日韩中文字幕一区二区| 性欧美精品高清| 野花国产精品入口| 精品不卡视频| 欧美精品自拍| 91香蕉视频mp4| 成人h版在线观看| 国产成人综合在线播放| 久久99国产精品久久99果冻传媒| 日产精品久久久久久久性色| 亚洲国产色一区| 夜夜嗨av一区二区三区网页| 亚洲男女一区二区三区| 国产欧美精品一区二区色综合朱莉| 欧美一二三四在线| 日韩午夜激情免费电影| 91麻豆精品国产91久久久久| 欧美三级中文字| 精品视频123区在线观看| 欧美在线观看禁18| 欧美亚男人的天堂| 欧美日韩一区二区三区在线看| 91搞黄在线观看| 欧美色综合网站| 欧美日韩免费在线视频| 欧美视频精品在线观看| 在线免费精品视频| 欧美午夜电影网| 欧美日韩黄色影视| 欧美日韩国产一级片| 欧美群妇大交群的观看方式| 欧美群妇大交群中文字幕| 欧美日韩一级二级| 欧美色图12p| 欧美精品视频www在线观看| 欧美精品xxxxbbbb| 日韩欧美美女一区二区三区| 久久综合网色—综合色88| 久久久国产综合精品女国产盗摄| 久久女同精品一区二区| 国产色产综合色产在线视频 | 国产精品久久二区二区| 国产性色一区二区| 国产精品视频第一区| 亚洲天堂a在线| 亚洲综合激情网| 日韩国产精品久久| 国产一区二区三区综合| av一区二区三区四区| 欧美日韩在线精品一区二区三区| 伊人天天综合| 欧美系列一区| 国产私拍一区| 欧美性三三影院|