清淨
  • Java

    • Java 基础
  • 框架

    • Flyway
    • MapStruct
    • Spring Cloud
  • 中间件

    • Elasticsearch
    • Redis
    • RabbitMQ
    • Kafka
  • 三剑客

    • HTML
    • CSS
    • JavaScript
  • 进阶

    • jQuery
    • ECMAScript6
    • TypeScript
  • Vue

    • Vue2
    • Vue3
    • VuePress
  • Linux
  • Jenkins
  • Maven
  • MySQL
  • 插件工具
  • 代码集成
  • 其它

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • 设计模式
迁移日志
订阅号
微信订阅号
微信订阅号
GitHub
  • Java

    • Java 基础
  • 框架

    • Flyway
    • MapStruct
    • Spring Cloud
  • 中间件

    • Elasticsearch
    • Redis
    • RabbitMQ
    • Kafka
  • 三剑客

    • HTML
    • CSS
    • JavaScript
  • 进阶

    • jQuery
    • ECMAScript6
    • TypeScript
  • Vue

    • Vue2
    • Vue3
    • VuePress
  • Linux
  • Jenkins
  • Maven
  • MySQL
  • 插件工具
  • 代码集成
  • 其它

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • 设计模式
迁移日志
订阅号
微信订阅号
微信订阅号
GitHub
  • Vue2

    • 简介
    • 起步
    • Vue 实例
    • Vue 指令
    • 监听数据变化
    • 操作 DOM
    • 组件化
    • 模块化
    • webpack
    • Vue CLI
    • Vue-Router
    • Vuex
    • 事件总线 $bus
    • 混入 Mixin
    • better-scroll
    • Axios
    • Vue 细节补充
    • 项目中遇到的问题

混入 Mixin

可以将组件中共有的属性、组件、方法等抽取出来。如果方法是生命周期函数,则会把现有的和 mixin 中的合并起来。如果方法不是生命周期函数,则会用 mixin 中的替换原函数中的。

  • mixin.js

    import { debounce } from 'common/utils'
    
    export const goodsImgLoadMixin = {
      data() {
        return {
          goodsItemImgLoad: null
        }
      },
      mounted() {
        const refresh = debounce(this.$refs.scroll.refresh, 300)
        this.goodsItemImgLoad = () => {
          refresh()
        }
        this.$bus.$on('goodsItemImgLoad', this.goodsItemImgLoad)
        // console.log('这是mixin')
      }
    }
    
    export const backTopMixin = {
      data() {
        return {
          // 回到顶部
          isTopShow: false
        }
      },
      methods: {
        // 回到顶部
        backTop() {
          this.$refs.scroll.backTo(0, 0)
        }
      }
    }
    
  • xxx.vue

    import { goodsImgLoadMixin, backTopMixin } from 'common/mixin'
    
    export default {
      name: "GoodsDetail",
      data() {
        return {
        
        }
      },
      // 使用混入
      mixins: [goodsImgLoadMixin, backTopMixin],
      methods: {
        scrollListener(pos) {
          // 显示回到顶部按钮
          this.isTopShow = pos.y <= -1166
        }
      }
    }
    
想要编辑此页?
上次更新: 2023/3/18 19:48
贡献者: djf
←事件总线 $busbetter-scroll→
[ 纸上得来终觉浅绝知此事要躬行 ]
Copyright © 2021-present Junfeng Dai
蜀ICP备2021009537号