<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關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題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中使用方法、計算屬性或觀察者的方法實例詳解

        來源:懂視網 責編:小采 時間:2020-11-27 22:05:37
        文檔

        Vue中使用方法、計算屬性或觀察者的方法實例詳解

        Vue中使用方法、計算屬性或觀察者的方法實例詳解:熟悉 Vue 的都知道 方法methods、計算屬性computed、觀察者watcher 在 Vue 中有著非常重要的作用,有些時候我們實現一個功能的時候可以使用它們中任何一個都是可以的,但是它們之間又存在一些不同之處,每一個都有一些適合自己的場景,我們要想知道合適的場景
        推薦度:
        導讀Vue中使用方法、計算屬性或觀察者的方法實例詳解:熟悉 Vue 的都知道 方法methods、計算屬性computed、觀察者watcher 在 Vue 中有著非常重要的作用,有些時候我們實現一個功能的時候可以使用它們中任何一個都是可以的,但是它們之間又存在一些不同之處,每一個都有一些適合自己的場景,我們要想知道合適的場景

        熟悉 Vue 的都知道 方法methods、計算屬性computed、觀察者watcher 在 Vue 中有著非常重要的作用,有些時候我們實現一個功能的時候可以使用它們中任何一個都是可以的,但是它們之間又存在一些不同之處,每一個都有一些適合自己的場景,我們要想知道合適的場景,肯定先對它們有一個清楚的了解,先看一個小例子。

        <div id="app">
         <input v-model="firstName" type="text">
         <input v-model="secondName" type="text">
         <p>{{fullName}}</p>
        </div>

        methods 方式

        var vm = new Vue({
         el: "#app",
         data: {
         firstName: "Mo",
         secondName: "deng",
         fullName: ""
         },
         methods: {
         getFullName () {
         this.fullName = this.firstName + "" + this.secondName;
         }
         },
         mounted () {
         this.getFullName();
         }
        });

        computed 方式

        var vm = new Vue({
         el: "#app",
         data: {
         firstName: "liu",
         secondName: "deng"
         },
         computed: {
         fullName () {
         return this.firstName + "" + this.secondName;
         }
         }
        });

        watcher 方式

        var vm = new Vue({
         el: "#app",
         data: {
         firstName: "liu",
         secondName: "deng",
         fullName: "liudeng"
         },
         watch: {
         firstName: function (value) {
         this.fullName = value+ "" + this.secondName
         },
         secondName: function (value) {
         this.fullName = this.firstName + "" + value
         }
         }
        });

        我們看到上面三種方法實現一個相同的效果,雖然效果相同,但是我們每個方法之間會有所區別。

        methods 方法

        在我們使用 Vue 時可能會有很多方法會被放到這里,比如它可能是我們的事件處理方法,一些操作方法的邏輯等等,但是它不能跟蹤任何依賴,而且還會在每次組件重新加載時都會執行,這就會導致我們的方法會執行很多次,如果我們的 UI 操作頻繁的話,會導致性能的問題,所以在一些開銷比較大的計算時,我們應該嘗試其他方案進行優化處理。

        computed 計算屬性

        從名字我們其實大概的可以看出,它是一個依賴于其他屬性的,當依賴的屬性發生變化的時候就會觸發我們計算屬性的邏輯,而且是基于它們依賴的屬性進行緩存的,也就是說只有當依賴的屬性發生變化的時候才會從新求值。

        相比 methods 的優勢在于不必每次從新執行定義的函數,這給我們的性能上有著很大的優勢,對我們已經存在的數據屬性非常好的處理方式,例如我們案例中 fullName 的計算,優勢非常明顯。

        watcher 觀察者

        當一些數據屬性變化時,我們執行一些邏輯時觀察者對我們非常重要,它可以幫助我們監聽屬性的變化,只要屬性發生變化,我們就可以執行對應的一些操作。

        如何實現一個 TodoList

        查看在線 TodoList

        在 methods 中我們放置了一些事件處理方法,我們可以在事件綁定中直接應用,不會依賴于任何的屬性。

        <button class="todo-remove" type="button" @click="removeTodoItem(item)">x</button>
        export default {
         name: "TodoList",
         data() {
         return {
         todoType: "all", //任務類型
         allTodoItems: [],
         };
         },
         methods: {
         //... 省略
        
         //添加任務
         addItem() {
         this.allTodoItems.push({
         id: this.allTodoItems.length,
         text: this.itemText,
         completed: false
         });
         this.itemText = "";
         },
         //刪除任務
         removeTodoItem(item) {
         this.allTodoItems = this.allTodoItems.filter(
         value => value.id != item.id
         );
         }
         }
        };

        我們可以看到計算屬性都是依賴于其他屬性的,只有當依賴的屬性值發生改變時,我們的計算屬性才會發生變化。

        例如:passTodoItems 計算屬性依賴于 todoType 屬性,只要 todoType 屬性發生變化,我們的 passTodoItems 也會發生變化,從而篩選出我們需要的數據。

        export default {
         name: "TodoList",
         data() {
         return {
         todoType: "all", //任務類型
         allTodoItems: [],
         };
         },
         computed: {
         //展示的任務
         passTodoItems() {
         return this[this.todoType](this.allTodoItems);
         },
         //是否顯示底部的選項
         isShowOptions() {
         return this.allTodoItems.length;
         }
         }
        }

        可以看到我們利用 watcher 進行數據的存儲邏輯操作,只要當我們監聽的屬性 allTodoItems 發生變化時,我們就把數據進行保存。

        export default {
         name: "TodoList",
         data() {
         return {
         todoType: "all", //任務類型
         allTodoItems: [],
         };
         },
         watch: {
         allTodoItems: {
         handler() {
         localStorage.setItem("todoItems", JSON.stringify(this.allTodoItems));
         },
         deep: true //深度監聽對象屬性的變化,如果沒有檢測不到對象屬性的變化
         }
         }
        }

        總結

        通過一個簡單的 TodoList 案例展示了 methods、computed、watcher 三者的用法,當然我們的實戰項目中不僅僅是這么簡單。

        我們再使用 methods、computed、watcher 時,應該選擇它們合適的使用場景,雖然它們可以實現相同的結果。

        methods 一般定義一些事件處理方法,操作方法,因為會頻繁的觸發,所以會引起性能問題,一般不會用在操作頻繁的地方。

        computed 會依賴于其他已經存在的屬性,而且會進行緩存,只有在依賴的屬性發生變化時,計算屬性才會發生改變,開銷大的地方使用較多。

        watcher 它提供了一個更通用的方法來監聽我們的屬性,當我們的屬性變化是執行一些邏輯的操作。

        以上所述是小編給大家介紹的Vue中使用方法、計算屬性或觀察者的方法實例詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

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

        文檔

        Vue中使用方法、計算屬性或觀察者的方法實例詳解

        Vue中使用方法、計算屬性或觀察者的方法實例詳解:熟悉 Vue 的都知道 方法methods、計算屬性computed、觀察者watcher 在 Vue 中有著非常重要的作用,有些時候我們實現一個功能的時候可以使用它們中任何一個都是可以的,但是它們之間又存在一些不同之處,每一個都有一些適合自己的場景,我們要想知道合適的場景
        推薦度:
        標簽: 方法 VUE 使用方法
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: sihu国产精品永久免费| A级毛片高清免费视频在线播放| 久9久9精品免费观看| 亚洲综合伊人久久综合| 一级做a爰片久久毛片免费看| 伊人久久亚洲综合影院| 一级毛片免费播放男男| 亚洲中文字幕无码中文字在线| 中国性猛交xxxxx免费看| 亚洲AV永久精品爱情岛论坛| 99re6免费视频| 亚洲1234区乱码| 日韩毛片免费在线观看| 日日狠狠久久偷偷色综合免费| 亚洲日韩VA无码中文字幕| a级毛片在线视频免费观看| 亚洲a在线视频视频| 亚洲网站在线免费观看| 中文字幕在线观看亚洲视频| 好吊妞998视频免费观看在线| 国产产在线精品亚洲AAVV| 久久亚洲中文字幕精品一区| 久久免费国产视频| 国产成人精品日本亚洲18图| 日本a级片免费看| a级片在线免费看| 亚洲六月丁香六月婷婷色伊人 | 三年在线观看免费观看完整版中文 | 中文字幕在线免费看线人| 777亚洲精品乱码久久久久久| 无码少妇一区二区浪潮免费| 国产亚洲蜜芽精品久久| 好看的亚洲黄色经典| 成人女人A级毛片免费软件| 免费福利资源站在线视频| 亚洲大尺度无码无码专区| 插B内射18免费视频| 拍拍拍无挡视频免费观看1000| 亚洲国产精品久久丫| 亚洲午夜精品一级在线播放放 | 国产精品亚洲一区二区无码 |