欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

討論vue中混入mixin的應(yīng)用

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

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

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

比如在兩個(gè)不同的組件的組件中調(diào)用sayHi方法,需要重復(fù)定義,倘若方法比較復(fù)雜,代碼將更加冗余,但使用mixins 就相對(duì)比較簡(jiǎn)單了。

首先在 mixin.js 文件中定義一個(gè)混入對(duì)象:

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

export default mixin

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

<script>
    import mixin from '../mixin'

    export default {
      mixins: [mixin]
    }
</script>

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

如果在兩個(gè)組件 data 中定義了各自的 userName,則打印結(jié)果會(huì)引用各自組件中的 userName

如果在兩個(gè)組件的 methods 中重復(fù)定義了相同的方法,則 mixin 中的方法會(huì)被覆蓋

給其中一個(gè)組件定義自己的 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é)果:

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

混入也可以進(jìn)行全局注冊(cè),但一般情況下不會(huì)全局使用,因?yàn)闀?huì)污染 vue 實(shí)例。

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

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

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

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

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

相關(guān)文章

  • Vue.delete()刪除對(duì)象的屬性說明

    Vue.delete()刪除對(duì)象的屬性說明

    這篇文章主要介紹了Vue.delete()刪除對(duì)象的屬性說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • webpack+vue.js快速入門教程

    webpack+vue.js快速入門教程

    隨著前端的快速發(fā)展,非常多的js框架被應(yīng)用到項(xiàng)目中。Vue.js本身支持對(duì)組件的異步加載,配合Webpack的分塊打包功能,可以極其輕松地實(shí)現(xiàn)組件的異步按需加載。 這篇文章是webpack+vue.j的入門教程,有需要的可以參考借鑒。
    2016-10-10
  • 使用Vue實(shí)現(xiàn)移動(dòng)端左滑刪除效果附源碼

    使用Vue實(shí)現(xiàn)移動(dòng)端左滑刪除效果附源碼

    這篇文章主要介紹了使用Vue實(shí)現(xiàn)移動(dòng)端左滑刪除效果,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • Vue-cli框架實(shí)現(xiàn)計(jì)時(shí)器應(yīng)用

    Vue-cli框架實(shí)現(xiàn)計(jì)時(shí)器應(yīng)用

    這篇文章主要為大家詳細(xì)介紹了Vue-cli框架實(shí)現(xiàn)計(jì)時(shí)器應(yīng)用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • vue3實(shí)現(xiàn)問卷調(diào)查的示例代碼

    vue3實(shí)現(xiàn)問卷調(diào)查的示例代碼

    本文主要介紹了vue3實(shí)現(xiàn)問卷調(diào)查的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 淺談VUE防抖與節(jié)流的最佳解決方案(函數(shù)式組件)

    淺談VUE防抖與節(jié)流的最佳解決方案(函數(shù)式組件)

    這篇文章主要介紹了淺談VUE防抖與節(jié)流的最佳解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • vue如何通過props方式在子組件中獲取相應(yīng)的對(duì)象

    vue如何通過props方式在子組件中獲取相應(yīng)的對(duì)象

    這篇文章主要介紹了vue如何通過props方式在子組件中獲取相應(yīng)的對(duì)象,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 使用mint-ui開發(fā)項(xiàng)目的一些心得(分享)

    使用mint-ui開發(fā)項(xiàng)目的一些心得(分享)

    下面小編就為大家?guī)硪黄褂胢int-ui開發(fā)項(xiàng)目的一些心得(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • vue.js加載新的內(nèi)容(實(shí)例代碼)

    vue.js加載新的內(nèi)容(實(shí)例代碼)

    vue是一種輕巧便捷的框架,那么如何進(jìn)行對(duì)于數(shù)據(jù)加載的刷新呢?以下就是我對(duì)于vue.js數(shù)據(jù)加載的一點(diǎn)想法
    2017-06-06
  • Vue-cli proxyTable 解決開發(fā)環(huán)境的跨域問題詳解

    Vue-cli proxyTable 解決開發(fā)環(huán)境的跨域問題詳解

    本篇文章主要介紹了Vue-cli proxyTable 解決開發(fā)環(huán)境的跨域問題詳解,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-05-05

最新評(píng)論