您好,登錄后才能下訂單哦!
本篇內容主要講解“vue mixins代碼如何復用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“vue mixins代碼如何復用”吧!
<!-- 主文件 --> <template> <button @click="clickHandle">button</button> </template> <script> export default { name: 'PageDemo', methods: { func1(){}, func2(){}, func3(){}, clickHandle(){ this.func1(); this.func2() this.func3() console.log('button clicked') } }, } </script>
如果當前組件不好拆分,就會出現很多函數,代碼會顯得不清晰。 我現在的處理方法是通過mixins
混入,參照MVC思想,當前文件的的methods只寫和模板直接引用的處理方法,其他的函數都通過混入方式引用。
// compose-demo.js export default { methods: { func1(){}, func2(){}, func3(){}, } }
<template> <button @click="clickHandle">button</button> </template> <script> // 主文件 import ComposeDemo from './compose-demo' export default { name: 'PageDemo', mixins: [ComposeDemo], methods: { clickHandle(){ this.func1(); this.func2() this.func3() console.log('button clicked') } }, } </script>
充分利用mixins
還有很多優點。
v-model
不適用。需要采用$emit
方法// 組件 <template> <input v-model="a" @change="inputChangeHandle"/> <input v-model="b" @change="inputChangeHandle" /> </template> <script> export default { name: 'ComponentChild', props: { propA: { type: String }, propB: { type: String } }, data(){ return { a: this.propA, b: this.propB, } }, methods: { inputChangeHandle(){ this.$emit('update-data', {a:this.a, b:this.b}) } } } </script> // 調用方 <template> <component-child :propA="query.a" :propB="query.b" @update-data="getData"/> </template> <script> import ComponentChild from './component-child.vue' export default { name: 'Page1', components: {ComponentChild}, data(){ return { query: { a: '默認數據a', b: '默認數據b' } } }, methods: { getData(payload) { const {a,b}=payload; this.query.a = a; this.query.b = b; } } } </script>
如果你有多處地方需要用到ComponentChild
組件,那每個調用地方都需要寫一個方法來監聽@update-data
事件。
此時,可以這樣改一下
// 純函數,引入ComponentChild,并且聲明getData方法 // compose-component-child.js <script> import ComponentChild from './component-child.vue' </script> export default { components: {ComponentChild}, methods: { // 通常情況,復用的業務組件都會有同樣的數據結構,都帶有query.a和query.b。如果不一致,那直接在父組件重寫該方法 getData(payload) { const {a,b}=payload; this.query.a = a; this.query.b = b; } } } // 調用方 <template> <component-child :propA="query.a" :propB="query.b" @update-data="getData"/> </template> <script> import ComposeComponentChild from './compose-component-child.js' export default { name: 'Page1', mixins: [ComposeComponentChild] data(){ return { query: { a: '默認數據a', b: '默認數據b' } } }, methods: { } } </script>
借鑒了Angular的依賴注入,Page
不直接聲明、引用Component
,而是通過混入Compose
直接使用。
Component
組件,Compose
引入Component
并且注冊Component
(聲明額外的方法),Page
調用組件混入Compose
,就可以可以直接使用Component
組件
比如常用的表格需要一下數據
<script> import {defaultPageSize}from '@/setting' export default { data(){ return { tableList: [], pageSize: defaultPageSize, pageNo: 1, totalRecords: 0, } } } </script>
以上數據都可以組裝為一個compose-table.js
文件混入到你要使用的地方,當然也可以通過在compose-table
引用注冊表格組件。
到此,相信大家對“vue mixins代碼如何復用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。