亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

討論vue中混入mixin的應用

瀏覽:2日期:2022-09-30 08:34:04

混入 (mixin) 提供了一種非常靈活的方式,來分發 Vue 組件中的可復用功能。一個混入對象可以包含任意組件選項。當組件使用混入對象時,所有混入對象的選項將被“混合”進入該組件本身的選項。

即 mixin 在引入組件之后,會將組件內部的內容如data、method等屬性與父組件相應內容進行合并。相當于在引入后,父組件的各種屬性方法都被擴充了。

比如在兩個不同的組件的組件中調用sayHi方法,需要重復定義,倘若方法比較復雜,代碼將更加冗余,但使用mixins 就相對比較簡單了。

首先在 mixin.js 文件中定義一個混入對象:

let mixin = { data () { return { userName: ’mixin’ } }, created () { this.sayHello() }, methods: { sayHello () { console.log(`${this.userName}, welcome`) } }}export default mixin

然后定義兩個組件,分別在組件中引入:

<script> import mixin from ’../mixin’ export default { mixins: [mixin] }</script>

則兩個組件的打印結果都為:

討論vue中混入mixin的應用

如果在兩個組件 data 中定義了各自的 userName,則打印結果會引用各自組件中的 userName

如果在兩個組件的 methods 中重復定義了相同的方法,則 mixin 中的方法會被覆蓋

給其中一個組件定義自己的 userName 和 sayHi 方法:

<script> import mixin from ’../mixin’ export default { mixins: [mixin], data() {return { userName: ’BComponent’} }, created () { this.sayHello() }, methods: {sayHello () { console.log(`Hi, ${this.userName}`)} } }</script>

則打印結果:

討論vue中混入mixin的應用

這有點像注冊了一個 vue 公共方法,可以在多個組件中使用。還有一點類似于在原型對象中注冊方法,并且可以定義相同函數名的方法進行覆蓋。

混入也可以進行全局注冊,但一般情況下不會全局使用,因為會污染 vue 實例。

我一般在項目中會這樣用,比如在多個組件中有用到通用選擇器,選項是:是,否,可以使用 mixin 來添加一個統一的字典項過濾器,來實現選項的回顯。

1. 首先創建一個 Dictionary.js 文件,用于保存字典項對應的含義,并將其暴露出去:

export const COMMON_SELECT = [ { code: 0, label: ’是’}, { code: 1, label: ’否’}];

注:此處創建的 Dictionary.js 文件,也可以在頁面渲染的時候拿來循環選項,具體代碼如下:

import { COMMON_SELECT } from ’../constants/Dictionary.js’export default { data() {return { comSelectOptions: COMMON_SELECT} }}<select v-mode='selStatus'> <el-option v-for='item in comSelectOptions' :key='item.code' :label='item.label' :value='item.code'></el-option></select>

2.然后再創建一個 filter.js 文件,保存自定義的過濾函數:

import { COMMON_SELECT } from ’../constants/Dictionary.js’export default { filters: { comSelectFilter: (value) => { const target = COMMON_SELECT.filter(item => {return item.code === value }) return target.length ? target[0].label : value } }}

3.最后在 main.js 中一次性引入 filter 方法:

import filter from ’./mixin/filter’Vue.mixin(filter)

歐了,這樣我們就可以在任一組件中隨意使用了

<template> <div>....{{ status | comSelectFilter }}.... </div> </template>

以上就是討論vue中混入mixin的應用的詳細內容,更多關于vue中混入mixin的應用的資料請關注好吧啦網其它相關文章!

標簽: Vue
相關文章:
主站蜘蛛池模板: 亚洲女精品一区二区三区 | 亚洲高清视频在线 | 亚洲啊啊啊啊啊 | 手机看片国产免费现在观看 | 久久厕所精品国产精品亚洲 | 久久久精品久久久久三级 | 亚洲伦理一区二区三区 | 欧美日韩一区二区三区免费不卡 | 亚洲国产天堂久久九九九 | 国产成人精品1024在线 | 韩国福利影视一区二区三区 | 国产精品视频一区二区三区 | 国产精品成人不卡在线观看 | 国产欧美日韩在线视频 | 男女国产一级毛片 | 亚洲激情 | 一区二区三区免费 | 夜夜夜爽爽爽久久久 | 日韩精品国产一区 | 日本亚洲欧美在线 | www亚洲| 92午夜影院 | 成人性色生活影片 | 一级毛片免费在线 | 新一级毛片国语版 | 久久综合九色综合亚洲小说 | 欧美国产成人精品一区二区三区 | 丁香六月婷婷 | 国产日韩欧美成人 | 亚洲欧洲国产成人综合一本 | 在线日本人观看成本人视频 | 国产三级网站 | 成人毛片18女人毛片免费视频未 | 免费香蕉依人在线视频久 | 久久久网站亚洲第一 | 亚洲色图综合在线 | 国产精品美女网站在线看 | 免费特黄一区二区三区视频一 | 免费看黄色网页 | 一道精品视频一区二区三区图片 | 日韩国产成人精品视频人 |