日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:23日期: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構造函數中定義的屬性合并為vm.$options,vm.$options.data()中的this指向vm.$options,而methodA和B并沒有直接掛在vm.$options下,所以this.methodA和this.B為undefined。

// 創建一個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訪問數據,在映射過程中,通過call將data()的this指向當前的實例vm,并將data()的執行結果返回,因為prop和methods的初始化在data之前,所以這時vm上已有_props和_methods,可以拿到this.methodA和this.B。(vm.key如何實現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訪問數據,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用法說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
视频国产精品| 日韩在线看片| 久久久久蜜桃| 激情久久久久久久| 一区免费在线| 免费在线看一区| 日本不卡一区二区三区| 国产日韩欧美三级| 另类欧美日韩国产在线| 不卡福利视频| 久久免费国产| 免费在线观看不卡| 亚洲欧美日韩国产一区| 中文字幕av一区二区三区人| 日本aⅴ免费视频一区二区三区| 国产日产一区| 中文在线а√在线8| 性欧美69xoxoxoxo| 首页国产欧美久久| 国产精品宾馆| 久久精品99久久无色码中文字幕| 日韩一区二区免费看| 日韩黄色免费网站| 国产精品99一区二区三| 亚洲精品成人| 国产精品综合色区在线观看| 欧美日韩在线观看首页| 国产精品毛片| 久久av国产紧身裤| 免费毛片在线不卡| 欧美影院精品| 精品成人免费一区二区在线播放| 美女久久一区| 国产精品a级| 激情综合激情| 国产欧美在线| 亚洲国产专区| 欧美日韩一视频区二区| 国产v综合v| 亚洲bt欧美bt精品777| 91视频久久| 日韩精品三级| 久久亚洲精品中文字幕蜜潮电影| 免费视频一区二区| 国产成人精品一区二区三区视频| 亚洲作爱视频| 国产成人精选| 日韩欧美美女在线观看| 欧美成人基地| 免费一区二区三区在线视频| 国产毛片久久| 色天使综合视频| 日韩国产欧美视频| 亚洲精品午夜av福利久久蜜桃| 久久中文字幕导航| 亚洲精选91| 国产中文一区| jizzjizz中国精品麻豆| 亚洲综合激情在线| 欧美va亚洲va日韩∨a综合色| 国产精品高清一区二区| 国产精品美女久久久| 捆绑调教日本一区二区三区| 日韩激情网站| 免费不卡在线观看| 欧美精选视频一区二区| 欧美激情视频一区二区三区在线播放| 日韩在线观看一区二区| 在线成人动漫av| www.九色在线| 欧美aⅴ一区二区三区视频| 蜜臀91精品一区二区三区| 99久久www免费| 久久伊人国产| 国产精品极品在线观看| 亚洲青青久久| 日韩制服丝袜先锋影音| 亚洲欧美日韩国产一区| 欧美日韩国产欧| 91精品国产成人观看| 精品欠久久久中文字幕加勒比| 日韩精品一区二区三区中文| 国产免费成人| 欧美在线亚洲| 免费av一区二区三区四区| 亚洲综合在线电影| 国产在线不卡一区二区三区 | 天海翼亚洲一区二区三区| 激情婷婷亚洲| 久久一区二区三区喷水| 欧美亚洲国产激情| 亚洲精品888| 亚洲激情国产| 美女国产一区| 一区二区三区四区日韩| 国产亚洲亚洲| 夜夜精品视频| 亚洲欧美日韩视频二区| 99综合视频| 久久亚洲欧洲| 中文字幕一区二区三区在线视频| 女同性一区二区三区人了人一 | 麻豆91精品| 六月天综合网| 中文字幕日韩高清在线| 色8久久久久| 国产亚洲欧美日韩精品一区二区三区| 日本少妇一区二区| 国产乱码精品一区二区三区亚洲人| 日韩高清不卡一区| 国产精品羞羞答答在线观看| 国产午夜久久av| 久久av国产紧身裤| 精品国产欧美| 久久精品导航| 鲁大师影院一区二区三区| 日韩欧美三区| 国产毛片精品| 91综合网人人| 91高清一区| 视频国产精品| 久久麻豆视频| 日韩精品欧美激情一区二区| 久久一区二区三区喷水| 午夜一区在线| 国产精品网址| 99久精品视频在线观看视频| 丝袜亚洲另类欧美| 亚洲精品观看| 精品国产美女a久久9999| 精精国产xxxx视频在线播放| 好看的av在线不卡观看| 国产探花一区| 九九色在线视频| 日韩综合一区二区| 久久香蕉网站| 欧美日韩国产高清| 国产精品网站在线看| 日韩欧美精品| 亚洲一区二区免费在线观看| 国产欧美大片| 亚洲二区视频| 久久精品xxxxx| 91中文字幕精品永久在线| 美女精品网站| 日韩88av| 日本久久一区| 91看片一区| 日本不卡高清| 亚洲1234区| 日韩精品一区二区三区中文| 天堂av在线| 深夜日韩欧美| 人人香蕉久久| 欧美日韩亚洲一区三区| 激情偷拍久久| 麻豆高清免费国产一区| 亚洲色诱最新| 国产精品成人自拍| 日韩一级不卡| 高清精品久久| 日韩精品视频网站| 免费毛片在线不卡| 麻豆成人91精品二区三区| 视频一区二区三区入口| sm久久捆绑调教精品一区| 日韩av一级片| 中文在线不卡| 日本免费一区二区三区四区| 911亚洲精品| 丝袜美腿亚洲一区二区图片| 蜜桃成人精品| 久久影院资源站| 亚洲精品综合| 影院欧美亚洲| 久久精品免费一区二区三区| 国产精品视频一区视频二区| 日韩影院免费视频| 久久中文字幕av一区二区不卡| 乱一区二区av| 欧美日韩a区| 亚洲伊人精品酒店| 国产高清一区| 欧美香蕉视频| 精品三级国产| 国产精品一区二区av交换| 亚洲精品乱码| 国产模特精品视频久久久久| 高清不卡亚洲| 精品欠久久久中文字幕加勒比| 欧美日韩夜夜| 亚洲区欧美区| 三级在线观看一区二区| 亚洲高清毛片| 国产精品久久久久av电视剧| 国产一区二区三区不卡av| 美腿丝袜亚洲一区| 国产精品尤物| 国产欧美成人| 国产日韩高清一区二区三区在线 |