最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

討論vue中混入mixin的應用

 更新時間:2021年05月11日 14:52:47   作者:sugar_coffee  
這篇文章主要介紹了vue中混入mixin的理解和應用,對vue感興趣的同學,可以參考下

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

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

比如在兩個不同的組件的組件中調(diào)用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>

則兩個組件的打印結(jié)果都為:

如果在兩個組件 data 中定義了各自的 userName,則打印結(jié)果會引用各自組件中的 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>

則打印結(jié)果:

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

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

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

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

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

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

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.然后再創(chuàng)建一個 filter.js 文件,保存自定義的過濾函數(shù):

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的應用的詳細內(nèi)容,更多關(guān)于vue中混入mixin的應用的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

工布江达县| 四川省| 南和县| 泽库县| 汾阳市| 仲巴县| 阳西县| 柘城县| 临泽县| 漾濞| 甘谷县| 平阴县| 新津县| 饶阳县| 青冈县| 绥芬河市| 鹿泉市| 深泽县| 临高县| 米林县| 东阳市| 冕宁县| 图木舒克市| 聊城市| 娄烦县| 武强县| 长垣县| 襄城县| 高密市| 分宜县| 江口县| 虎林市| 明星| 屏山县| 镶黄旗| 健康| 德令哈市| 陇川县| 宝应县| 翼城县| 通化市|